共用方式為


編譯器警告 (層級 3) C4686

'使用者定義型別' : 行為可能有變更,在 UDT 傳回呼叫慣例中發生變更

類別樣板特製化在用於傳回型別之前未定義。任何可將類別具現化的處理都將解析成 C4686;您可以選擇宣告執行個體或存取成員 (C<int>::anything)。

這項警告是使 Visual C++ .NET 2003 編譯器符合 ISO C++ 標準的處理結果。

此警告在預設情況下為關閉的。如需詳細資訊,請參閱預設為關閉的編譯器警告

請改試下列作法:

// C4686.cpp
// compile with: /W3
#pragma warning (default : 4686)
template <class T>
class C;

template <class T>
C<T> f(T);

template <class T>
class C {};

int main() {
   f(1);   // C4686
}

template <class T>
C<T> f(T) {
   return C<int>();
}