Compiler Warning C4959

cannot define unmanaged struct 'type' in /clr:safe because accessing its members yields unverifiable code

Remarks

Accessing a member of an unmanaged type will produce an unverifiable (peverify.exe) image.

For more information, see Pure and Verifiable Code (C++/CLI).

The /clr:safe compiler option is deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017.

This warning is issued as an error and can be disabled with the warning pragma or the /wd compiler option.

Example

The following sample generates C4959:

// C4959.cpp
// compile with: /clr:safe

// Uncomment the following line to resolve.
// #pragma warning( disable : 4959 )
struct X {
   int data;
};

int main() {
   X x;
   x.data = 10;   // C4959
}