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

问题描述 投票:-3回答:1

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

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

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

c++ parameter-passing std-pair
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.