Referencia temporal en msvc
¿Por qué compila esto en MS Visual C ++?
struct myClass{};
void func(myClass& arg){}
void main() {
func( myClass() ); // works even though func only takes myClass&
} // (not const myClass&!!)
¿Funciona también en otros compiladores o es específico de MSVC (o incluso un error de compilación)? Incluso puedo obtener la referencia en este valor como este:
void func(myClass* arg){}
int main() {
func( &myClass() );
}
Esto funciona SOLAMENTE en objetos que se crean temporalmente con un constructor. Esto no funcionaría con ningún otro valor como (myClass () + myClass ()) por ejemplo ...