Upozornění kompilátoru (úroveň 1) C4544
'deklarace': Výchozí argument šablony byl u této deklarace šablony ignorován.
Výchozí argument šablony byl zadán v nesprávném umístění a byl ignorován. Výchozí argument šablony šablony třídy lze zadat pouze v deklaraci nebo definici šablony třídy, a ne pro člena šablony třídy.
Tato ukázka vygeneruje C4545 a další ukázka ukazuje, jak ji opravit:
// 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
V tomto příkladu se výchozí parametr vztahuje na šablonu S
třídy:
// 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 {};