我就遇到了這個,而在gcc
編譯一些移植的代碼。基本上,這奇怪的代碼編譯在Visual Studio這真的只是吹拂我的心靈:綁定到臨時的Visual Studio錯誤的非const引用?
class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
Zebra y;
x = y;
foo(goo());
}
Visual studio
讓這一個蒼蠅。 gcc
會將其視爲編譯錯誤。有趣的是,如果您將int定義爲Zebra,則VC++
將會投訴。相當矛盾的行爲。思考?
這是不是一個錯誤,這是一個編譯器擴展,而且是一個邪惡的一個。 – chris 2013-05-05 02:59:54
MSVC確實有'警告C4239:非標準擴展used',但顯然你有警告關閉。 – MSalters 2013-05-06 09:21:14
我不明白你爲什麼需要使用無限遞歸函數來演示這個。 – Neutrino 2016-11-24 16:19:26