Odwołaj się do tymczasowego w msvc

Dlaczego kompiluje się na MS Visual C ++?

struct myClass{};

void func(myClass& arg){}

void main() {
   func( myClass() );  // works even though func only takes myClass& 
}                      // (not const myClass&!!)

Czy to działa również na innych kompilatorach, czy też jest to specyficzne dla MSVC (lub nawet błąd kompilatora?). Mogę nawet uzyskać referencję na temat tej wartości:

void func(myClass* arg){}

int main() {
    func( &myClass() ); 
}

Działa to TYLKO na obiektach tymczasowo tworzonych za pomocą konstruktora. Nie działa to na przykład z inną wartością rvalue (myClass () + myClass ()) na przykład ..

questionAnswers(2)

yourAnswerToTheQuestion