Share via


Upozornění kompilátoru (úroveň 1) C4382

throwing 'type' : typ s __clrcall destruktor nebo konstruktor copy lze zachytit pouze v /clr:pure module

Poznámky

Možnost /clr:pure compiler je v sadě Visual Studio 2015 zastaralá a v sadě Visual Studio 2017 není podporována.

Při kompilaci pomocí /clr (nikoli /clr:pure), zpracování výjimek očekává, že členské funkce v nativním typu budou __cdecl a nebudou __clrcall. Nativní typy s členskými funkcemi využívající __clrcall konvenci volání nelze zachytit v modulu zkompilovaném pomocí /clr.

Pokud se výjimka zachytí v modulu zkompilovaném pomocí /clr:pure, můžete toto upozornění ignorovat.

Další informace naleznete v tématu /clr (Common Language Runtime Compilation).

Příklad

Následující ukázka vygeneruje 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
}