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

Why use if-else rather than ternary operation in std::max implementation

本文关键字:三元 操作 if-else max std 实现 为什么      更新时间:2023-10-16

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

我敢说,"当编译器的目标代码生成器通过人类语法替代时,"这将没有任何区别。

在普通的"编译"过程中,"您的意图"将被简化为一系列基本操作,然后将(经过优化…)翻译成可执行代码。,如果,在这种情况下,"在源代码中有几种表达方式",它们很可能会减少到只有一种。