为什么在std :: max实现中使用if-else而不是三元操作

时间:2016-08-11 01:32:13

标签: c++ stl

在Ubuntu中实现std :: max,我很困惑为什么他们使用if语句而不是三元语句。三元操作在评论中(所以看起来它曾经是那样并且被改变了)。是否在此处指定使用if-else的原因?

template<typename _Tp>
inline const _Tp&
max(const _Tp& __a, const _Tp& __b)
{
  // concept requirements
  __glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
  //return  __a < __b ? __b : __a;
  if (__a < __b)
    return __b;
  return __a;
}

1 个答案:

答案 0 :(得分:2)

我敢说,“当编译器的目标代码生成器使用 人类语法替代方案时,”它将无任何区别。

在“编译”的普通过程中,“你的意图”将被简化为一系列原始操作,然后将(优化后......)翻译成可执行代码。如果在这种情况下,“有几种方法可以在源代码中说出来”,那么它们最有可能只减少到一个。