コンパイラ エラー C2316

更新 : 2007 年 11 月

エラー メッセージ

'exception' は、デストラクタまたはコピー コンストラクタにアクセスできないためキャッチできません。

例外が値または参照によってキャッチされましたが、コピー コンストラクタまたは代入演算子、またはその両方にアクセスできませんでした。

このコードは、以前のバージョンのコンパイラでは許容されましたが、現在はエラーになります。詳細については、「Summary of Compile-Time Breaking Changes」を参照してください。

使用例

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

// C2316.cpp
// compile with: /EHsc
#include <stdio.h>

extern "C" int printf_s(const char*, ...);

struct B 
{
public:
    B() {}
    // Delete the following line to resolve.
private:
    // copy constructor
    B(const B&) 
    {
    }
};

void f(const B&) 
{
}

int main() 
{
    try 
    {
        B aB;
        f(aB);
    }
    catch (B b) {   // C2316
        printf_s("Caught an exception!\n");   
    }
}