最近,我按照關於分配到在C++如以下示例中所示的表達式的討論:我應該爲賦值運算符使用左值引用限定符嗎?
string s1, s2, s3;
(s1 + s2) = s3;
用C++ 11也能夠限制賦值操作符到左值的引用(在左側)。當聲明賦值運算符如下所示時,由於不兼容的類型,編譯器Clang會拒絕代碼並顯示錯誤消息。
auto operator=(const string& rhs) & -> string&;
auto operator=(string&& rhs) & -> string&;
我還沒有見過這個地方。對賦值操作符不使用左值引用限定符是否有很好的理由(除了在大多數編譯器中缺少支持)?
原因之一是大多數編譯器還不支持語法。另一個是它不能解決*重大問題。這種錯誤發生的頻率如何? –
我認爲它確實發生。 'if(somefunc()= value)'當然,大多數編譯器會爲此發出警告,但不是所有情況。 –