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