Compiler Warning (level 4) C4238

nonstandard extension used : class rvalue used as lvalue

This error occurs when you are using Microsoft language extensions (/Ze) and use a class type as is an rvalue in a context that implicitly or explicitly takes its address. For example:

struct C
{
C();
};
C * pC = &C();   // yields C4238

This usage is not permitted by the C++ Working Paper, and in some cases (such as the example above) can be quite dangerous. This usage is being permitted under /Ze for compatibility with previous versions of the compiler, which did not flag this error. This usage is not permitted under /Za.