Ссылка временная в msvc
Почему это компилируется в MS Visual C ++?
struct myClass{};
void func(myClass& arg){}
void main() {
func( myClass() ); // works even though func only takes myClass&
} // (not const myClass&!!)
Работает ли это и на других компиляторах или это специфично для MSVC (или даже ошибка компилятора?). Я даже могу получить ссылку на это значение:
void func(myClass* arg){}
int main() {
func( &myClass() );
}
Это работает ТОЛЬКО для объектов, которые временно создаются с помощью конструктора. Это не будет работать с любым другим значением типа r (например, myClass () + myClass ()).