[英]C++: What is the evaluation order of the user-defined comma operator?
我正在閱讀 Nicolai Josuttis 的“C++ 17 Completed Guide”並遇到以下表達式:
foo(arg1), (foo(arg2), foo(arg3));
作者聲稱內置逗號運算符的評估順序將從左到右,但可以通過重載它們來更改。 但是,我在 cppreference ( https://en.cppreference.com/w/cpp/language/eval_order ) 上看到了“評估順序”文章,並遇到了以下陳述:
- 內置逗號運算符的第一個(左)參數的每個值計算和副作用,在第二個(右)參數的每個值計算和副作用之前排序。
和
- 每個重載的運算符都遵循內置運算符的排序規則,當使用運算符表示法調用時,它會重載。
因此,根據聲明 16,cppreference 似乎聲稱重載的逗號運算符具有與其內置對應項相同的評估順序。 那么,作者所說的“通過重載逗號運算符,您可以更改其評估順序”究竟是什么意思,以及預期的具體行為是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.