Поделиться через


Предупреждение компилятора (уровень 1) C4544

declaration: аргумент шаблона по умолчанию пропускается в этом объявлении шаблона

Аргумент шаблона по умолчанию указан в неправильном месте и был пропущен. Аргумент шаблона по умолчанию для шаблона класса может быть указан только в объявлении или определении шаблона класса, но не в члене шаблона класса.

В этом примере показано возникновение ошибки C4545, а в следующем примере приводятся сведения по ее устранению.

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

В этом примере параметр по умолчанию применяется к шаблону класса 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 {};