Compilerwarnung (Stufe 4) C4238

Nicht dem Standard entsprechende Erweiterung: R-Wert einer Klasse als L-Wert verwendet

Um Kompatibilität mit früheren Versionen von Visual C++ zu gewährleisten, ermöglichen es die Microsoft-Erweiterungen (/Ze), einen Klassentyp in einem Kontext, in dem seine Adresse implizit oder explizit übernommen wird, als R-Wert zu verwenden. Dies kann sich jedoch in einigen Fällen, z. B. im folgenden Beispiel, als riskant erweisen.

Beispiel

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

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

Bei Einhaltung der ANSI-Kompatibilität (/Za) resultiert aus dieser Verwendungsweise ein Fehler.