更新: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");
}
}