編譯器警告 (層級 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 {};