编译器错误 C2316

更新:2007 年 11 月

错误消息

“exception”: 无法作为析构函数捕获,或者复制构造函数不可访问,或同时出现这两种情况

异常已由值或引用捕获,但复制构造函数和/或赋值运算符不可访问。

早期版本的编译器接受此代码,但现在则会出现错误。有关更多信息,请参见编译时的重大更改摘要

示例

下面的示例生成 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");   
    }
}