在构造std :: pair时按顺序评估参数

时间:2017-12-20 13:02:39

标签: c++ parameter-passing std-pair

我正在尝试从流中读取的两个值构造一对。这些值需要以正确的顺序读取(T1,然后是T2),但我认为参数评估的顺序未定义如下:

std::pair<T1, T2> Read(DataStreamRead& stream)
{
    return std::pair<T1, T2>(IO::Read<T1>(stream), IO::Read<T2>(stream));
}

(使用中间变量可以正常工作,但还有另一种方法吗?)

1 个答案:

答案 0 :(得分:2)

明确订购操作。

std::pair<T1, T2> Read(DataStreamRead& stream)
{
  T1 t1 = IO::Read<T1>(stream);
  T2 t2 = IO::Read<T2>(stream);
  return std::pair<T1, T2>(t1, t2);
}