Я столкнулся с этим, компилируя переносимый код в gcc
. В основном этот странный код компилируется в Visual Studio, который действительно просто дует в мой разум:
class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
Zebra y;
x = y;
foo(goo());
}
Visual studio
позволяет этому летать. gcc
воспримет это как ошибку компиляции. Интересно, что если вы напечатаете Zebra до int, VC++
будет жаловаться. Довольно противоречивое поведение. Мысли?