Я столкнулся с этим, компилируя какой-нибудь портативный код в gcc
. В основном этот странный код компилируется в Visual Studio, которая на самом деле просто взрывает мой разум:Ссылка на несвязанные ссылки на временную ошибку 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++
будет жаловаться. Довольно противоречивое поведение. Мысли?
Это не ошибка, это расширение для компилятора и злой. – chris
MSVC имеет «предупреждение C4239: используется нестандартное расширение», но, похоже, вы отключили это предупреждение. – MSalters
Я не понимаю, почему вам нужно использовать бесконечно рекурсирующую функцию для демонстрации этого. – Neutrino