コンパイラ エラー C2299

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

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

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

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

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

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