构造 std::pair 时按顺序计算参数

Evaluating arguments in order when constructing std::pair

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

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

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

明确地对操作进行排序。

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);
}