對於這個問題C++ 17評價順序與運算符重載功能
What are the evaluation order guarantees introduced by C++17?
隨着本說明書
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf
而且從說明書
此外,該文本,我們建議添加下列內容nal規則: 的順序涉及重載運算符的表達式的求值是 ,由與相應的內置運算符 關聯的順序確定,而不是函數調用的規則。
這是否意味着這兩個表達式不再等價?
a << b;
operator<<(a, b);
由於第二個看起來像函數調用,因此在參數中沒有保證評估順序?
這是正確的,這兩種不同的語法有不同的語義現在。運算符語法有其獨特的語義,函數調用語法具有函數調用的(新!)語義。 –
@KerrekSB這就是爲什麼這個建議: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0431r0.htm 被寫了,但我不相信它獲得了任何牽引力。 – ForeverLearning
@ForeverLearning:這當然是一個激發心靈,思想和建議的主題! –