Я столкнулся с этим при компиляции переносимого кода в 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++
будет жаловаться. Довольно противоречивое поведение. Мысли?
warning C4239: nonstandard extension used
, но, видимо, у вас отключено это предупреждение. - person MSalters   schedule 06.05.2013