2013-08-23 68 views
1

我知道Temporaries不能綁定到非const引用。VS2010:臨時不能綁定到非const引用

class X 
{ 
    int i; 
}; 

X fun() 
{ 
return X(); 
} 
void func(X &x) 
{ 

} 

int main() 
{ 

func(fun()); 
return 0; 
} 

是不是打電話給fun產生一個臨時?爲什麼可以在這裏暫時鏈接到non-const reference。我無法理解爲什麼這個彙編沒有問題。編輯: 我正在使用VS2010。我不明白這件事應該怎麼做。

+2

由於一個邪惡的MSVC擴展。 – chris

+0

我怎麼知道那個重複問題有答案? –

+0

@UchiaItachi如果你知道或不知道這並不重要,本網站的重點不是讓你表示它是爲了幫助你和其他人,如果有人將你的問題標記爲愚蠢,那麼你有必要考慮你的答案。現場作爲已經完成其工作 – aaronman

回答

2

是不是打電話給fun產生一個臨時?

是的。

爲什麼在這裏臨時鏈接到非const引用。

它不能。

我無法理解爲什麼這個編譯好。

因爲你的編譯器有問題。

我正在使用VS2010。我不明白這件事應該怎麼做。

該編譯器對該語言有許多非標準「擴展」。這只是該編譯器接受的狡猾代碼的一個例子,但不是一致的代碼。

+1

啊,這讓我瘋狂!謝謝。也許我會用'VS2010'和'temporaries'來改變問題標題,以便幫助其他人。 –

相關問題