编译器警告(等级 4)C4238
使用了非标准扩展:类 rvalue 用作了 lvalue
为了与以前版本的 Visual C++ 兼容,Microsoft 扩展 (/Ze) 允许在隐式或显式获取其地址的上下文中将类类型用作 rvalue。 在某些情况下(例如下面的示例),这可能很危险。
示例
// C4238.cpp
// compile with: /W4 /c
struct C {
C() {}
};
C * pC = &C(); // C4238
根据 ANSI 兼容性 (/Za),此用法会导致错误。