In the following test program, the specialization of the function-template
"first_of" declares an unused template parameter Y which causes a link error.
This "soft" failure is very hard to debug in functions with more than one
argument and with (levels of) nested templates. It would be helpful to have the
compiler flag this as an unused-template-parameter warning in specializations.
This should probably not be flagged as an error because template parameters,
whether used or unused, serve a purpose in template-metaprogramming.


Compilation command: g++ -Wall <cpp-file>

--------------------------
// declare
template<typename X, typename Y>
X& first_of(X & x, Y & y);

// specialize
template<typename X, typename Y /*note:unused*/ >
X& first_of(X & x1, X & x2) { return x1; }


int main(void)
{
        double a(5.0), b(6.0);
        double &a_also = first_of(a,b);
        (void) a_also;
        return 0;
}
----------------------------------


-- 
           Summary: Unused template parameter in function-template
                    specialization causes link error
           Product: gcc
           Version: 4.2.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rmanoj at umich dot edu
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43386

Reply via email to