Share via


Advertencia del compilador (nivel 1) C4544

'declaration': se omitió el argumento de plantilla predeterminado de esta declaración de plantilla

Se especificó un argumento de plantilla predeterminado en una ubicación incorrecta y se omitió. Un argumento de plantilla predeterminado de una plantilla de clase solo puede especificarse en la declaración o definición de la plantilla de clase y no en un miembro de la plantilla de clase.

Este ejemplo genera el error C4545 y el ejemplo siguiente muestra cómo corregirlo:

// C4544.cpp
// compile with: /W1 /LD
template <class T>
struct S
{
   template <class T1>
      struct S1;
   void f();
};

template <class T=int>
template <class T1>
struct S<T>::S1 {};   // C4544

En este ejemplo, el parámetro predeterminado se aplica a la plantilla de clase S:

// C4544b.cpp
// compile with: /LD
template <class T = int>
struct S
{
   template <class T1>
      struct S1;
   void f();
};

template <class T>
template <class T1>
struct S<T>::S1 {};