Compiler Warning (level 1) C4519 (Windows CE 5.0)

Send Feedback

default template arguments are only allowed on a class template; ignored

Default template arguments are allowed only on a class template declaration or definition. Default template arguments may not be used in a function template, or in the definition of a member of a class template.

The following code shows how to use default template arguments and some common mistakes.

/*****
Default template arguments are allowed only on a class template declaration or definition. Default template arguments may not be used in a function template, or in the definition of a member of a class template.
*****/

#include <stdio.h>

// OK : default template argument is allowed on a class template
template<class T=int> class A {
public:
   static T f(T a, T b) { return a + b; };
};

class B {
public:
   // C4519 : default template argument is not allowed here
   template<class T=int> static T f(T a, T b) { return a + b; };
};

// C4519 : default template argument is not allowed here
template<class T=int> T f(T a, T b) { return a + b; };

int main() {
   double a = 3.5, b = 4.25;
   double d = 0.0;

   d = f(a, b);             // double f(double, double)
                            //   Double is deduced from the types of the 
                            //   arguments to f().  f's default 
                            //   template argument is ignored.
   printf("%2.2lf\n", d);   // Prints the value 7.75

   d = A<>::f(a, b);        // int A<>::f(int, int)
                            //   Template argument defaults to int. Arguments
                            //   are coerced to ints, and an int is returned.
   printf("%2.2lf\n", d);   // Prints the value 7.00

   d = B::f(a, b);          //   Double is deduced from the types of the 
                            //   arguments to B::f().  B::f's default 
                            //   template argument is ignored.
   printf("%2.2lf\n", d);   // Prints the value 7.75

   return 0;
}

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.