Advertencia del compilador (nivel 1) C4382
se genera "type": un tipo con el destructor __clrcall o el constructor de copia solamente se puede detectar en el módulo /clr:pure
Comentarios
La opción del compilador /clr:pure está en desuso en Visual Studio 2015 y no se admite en Visual Studio 2017.
Cuando se compila con /clr (y no con /clr:pure), el control de excepciones espera que las funciones miembro de un tipo nativo sean __cdecl y no __clrcall. Los tipos nativos con funciones miembro que usan la convención de llamada __clrcall
no se pueden detectar en un módulo compilado con /clr.
Si la excepción se detectará en un módulo compilado con /clr:pure, puede omitir esta advertencia.
Para obtener más información, consulte /clr (Compilación de Common Language Runtime).
Ejemplo
El ejemplo siguiente genera la advertencia C4382.
// C4382.cpp
// compile with: /clr /W1 /c
struct S {
__clrcall ~S() {}
};
struct T {
~T() {}
};
int main() {
S s;
throw s; // C4382
S * ps = &s;
throw ps; // OK
T t;
throw t; // OK
}