情報が古くなっています‼ (追記参照)
参照で受け取った引数への変更を出力した際、
下記コードのように、式を分けない場合と分ける場合で出力内容が異なるようです。
どうしてこうなるのでしょうか?
両出力が同一(後者)だと想定していただけに非常に気になります。
回答の程、宜しくお願いします。
cpp
1#include <iostream> 2 3template <typename T> 4T f(T& t) 5{ 6 return ++t; 7} 8 9void test1() 10{ 11 int a{}; 12 std::cout << f(a) << " " << a << std::endl; 13} 14 15void test2() 16{ 17 int a{}; 18 std::cout << f(a) << " "; 19 std::cout << a << std::endl; 20} 21 22int main() 23{ 24 test1(); 25 test2(); 26 return 0; 27}
1 0 1 1
追記 (2018.3.14)
C++17にて式の評価順が厳密に定義された(参考)為、C++17以降では両ケース共に後者の出力となるようです。ご注意ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/01 04:28
2017/01/01 05:20