コンパイラ エラー C2299

更新 : 2007 年 11 月

エラー メッセージ

'関数' : 動作の変更: 明示的な特殊化には、コピー コンストラクタまたはコピー代入演算子を使用することはできません

このエラーは、Visual C++ 2005 で行ったコンパイラ準拠作業の結果として生成されることもあります。以前のバージョンの Visual C++ ではコピー コンストラクタまたはコピー代入演算子の明示的な特殊化が許可されていました。

C2299 を解決するには、コピー コンストラクタまたはコピー代入演算子をテンプレート関数にしないで、クラス型を使用する非テンプレート関数を使用します。テンプレート引数を明示的に指定することによってコピー コンストラクタまたはコピー代入演算子を呼び出すコードでは、テンプレート引数を削除する必要があります。

詳細については、「Visual C++ 2005 コンパイラの互換性に影響する変更点」を参照してください。

次の例では C2299 エラーが生成されます。

// C2299.cpp
// compile with: /c
class C {
   template <class T>
   C (T t);

   template <> C (const C&);   // C2299
   C (const C&);   // OK
};