Export (0) Print
Expand All
Expand Minimize

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).

Example

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
}

Community Additions

ADD
Show:
© 2014 Microsoft