编译器警告(等级 4)C4238

使用了非标准扩展:类 rvalue 用作了 lvalue

为了与以前版本的 Visual C++ 兼容,Microsoft 扩展 (/Ze) 允许在隐式或显式获取其地址的上下文中将类类型用作 rvalue。 在某些情况下(例如下面的示例),这可能很危险。

示例

// C4238.cpp
// compile with: /W4 /c
struct C {
   C() {}
};

C * pC = &C();   // C4238

根据 ANSI 兼容性 (/Za),此用法会导致错误。