Partilhar via


Aviso do compilador (nível 1) C4544

'declaration': argumento de modelo padrão ignorado nessa declaração de modelo

Um argumento de modelo padrão foi especificado em um local incorreto e foi ignorado. Um argumento de modelo padrão para um modelo de classe só pode ser especificado na declaração ou definição do modelo de classe, e não em um membro do modelo de classe.

Este exemplo gera C4545, e o exemplo seguinte mostra como corrigi-lo:

// 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

Neste exemplo, o parâmetro padrão se aplica ao modelo de classe 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 {};