で移植可能なコードをコンパイルしているときに、これに遭遇しました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 に typedef すると、エラーが発生しますVC++。かなり矛盾した行動。考え?