次の方法で共有


コンパイラ エラー 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
};