我在编译一些可移植代码时遇到了这个问题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
会将其捕获为编译错误。有趣的是,如果你 typedef Zebra 为 int,VC++
会报错。相当矛盾的行为。想法?