gpt4 book ai didi

c++ - 为什么在 std::max 的 libstdc++ 实现中避免使用三元条件?

转载 作者:行者123 更新时间:2023-12-03 07:01:00 27 4
gpt4 key购买 nike

<algorithm> 的 libstdc++ 实现中标题,其中一部分在我的系统中位于 /usr/include/c++/8/bits/stl_algobase.h ,可以看到std::max的如下实现:

template<typename _Tp>
_GLIBCXX14_CONSTEXPR
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;
}
您可以看到带有三元条件运算符 ?: 的单个语句被注释掉了, if而是使用基于代码的代码。
我想这有一些技术原因。那么注释掉的版本而不是事件的版本会出什么问题呢?或者它们完全等效,并且事件版本只是使逐步调试更容易?

最佳答案

gcc 中存在条件运算符实现错误,例如 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53000 .可能这是为了避免这些。

关于c++ - 为什么在 std::max 的 libstdc++ 实现中避免使用三元条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63901356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com