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 ..