Предупреждение компилятора (уровень 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 {};