我尝试构造整数对,其中第二个整数比第一个整数大1:
1 2
2 3
3 4
同时使用std::make_pair
和构造函数:
std::make_pair(n, n++);
但是,这导致配对相反:
2 1
3 2
4 3
如果我将后增量放在第一个参数上,或者改用(n+1)
,则会得到所需的结果。
为什么会这样显示?
这必须执行order of evaluation。来自cppreference.com
任何表达式的任何部分的求值顺序,包括函数参数的计算未指定。编译器可以评估操作数,其他子表达式可以按任何顺序排列,并且在选择时可以选择其他顺序>再次计算相同的表达式。