Ошибка компилятора C2316
Обновлен: Ноябрь 2007
Сообщение об ошибке
"исключение" : не удается перехватить, поскольку деструктор и/или конструктор копирования недоступен
'exception' : cannot be caught as the destructor and/or copy constructor are inaccessible
`Исключение было перехвачено по значению или ссылке, но конструктор копирования и/или оператор присваивания недоступен.
Этот код принимался компилятором из предыдущих версий, но теперь приводит к ошибке. Дополнительные сведения см. в разделе Сводная информация о критических изменениях, которые могут приводить к ошибкам компиляции.
Пример
Следующий пример приводит к возникновению ошибки 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");
}
}