Ссылка временная в 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 ()).

Ответы на вопрос(2)

Ваш ответ на вопрос