Compiler Error C2316
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C2316.
exception' : cannot be caught as the destructor and/or copy constructor are inaccessible
An exception was caught by value or by reference but the copy constructor and/or the assignment operator were inaccessible.
This code was accepted by the previous version's compiler but now gives an error.
The following sample generates 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");
}
}
Show: