Compiler Warning (level 1) C4382
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

Compiler Warning (level 1) C4382

Error Message

throwing 'type' : a type with __clrcall destructor or copy constructor can only be caught in /clr:pure module

When compiled with /clr (not /clr:pure), exception handling expects the member functions in a native type to be __cdecl and not __clrcall. Native types with member functions using __clrcall calling convention cannot be caught in a module compiled with /clr.

If the exception will be caught in a module compiled with /clr:pure, you can ignore this warning.

For more information, see /clr (Common Language Runtime Compilation).


The following sample generates 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
© 2015 Microsoft