Erreur du compilateur C2316
Mise à jour : novembre 2007
Message d'erreur
'exception' : ne peut pas être intercepté en tant que destructeur et/ou le constructeur de copie est inaccessible
'exception' : cannot be caught as the destructor and/or copy constructor are inaccessible
Une exception a été interceptée par valeur ou par référence, mais le constructeur de copie et/ou l'opérateur d'assignation était inaccessible.
Ce code était accepté par le compilateur de la version précédente, mais génère maintenant une erreur. Pour plus d'informations, consultez Récapitulatif des modifications sans rupture au moment de la compilation.
Exemple
L'exemple suivant génère l'erreur 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");
}
}