コンパイラの警告 (レベル 3) C4686

更新 : 2007 年 11 月

'ユーザー定義型動作と UDT の戻り値の呼び出し規約に変更がある可能性があります。

クラス テンプレート指定が、戻り値の型で使用される前に定義されていませんでした。クラスのインスタンス化により C4686 が解決されます。インスタンスの宣言またはメンバのアクセス (C<int>::anything) も省略可能です。

この警告は、Visual C++ .NET 2003 コンパイラを ISO C++ 標準に準拠させる作業の結果として生成されます。

詳細については、「Summary of Compile-Time Breaking Changes」を参照してください。

既定では、この警告はオフに設定されています。詳細については、「Compiler Warnings That Are Off by Default」を参照してください。

代わりに、次のコードを試してください。

// 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>();
}