【发布时间】:2017-07-09 00:41:12
【问题描述】:
根据this,有
std::div_t div( int x, int y );
std::ldiv_t div( long x, long y );
std::lldiv_t div( long long x, long long y );
std::ldiv_t ldiv( long x, long y );
std::lldiv_t lldiv( long long x, long long y );
<cinttypes> 中的两个 div
我更愿意看到
template<typename t>
std::div_t<T> div(T x, T y);
template<>
std::div_t<int> div(int x, int x)
{
// implementation here
}
想法?
【问题讨论】:
-
最后的
std::div<int>应该是std::div_t<int>吧? -
真正让我困惑的是这些函数的存在——是的,除法和模数通常在硬件级别一起计算,但我所知道的几乎任何生产就绪的编译器都已经能够利用这个事实并且如果 C 代码同时执行除法和取模,则只执行一次计算。
-
@MatteoItalia:“我所知道的几乎所有生产就绪的编译器”你知道二十年来“生产就绪的编译器”的状态吗?我>以前?因为这些是 C++98 函数。我宁愿怀疑当时的编译器质量完全不同。
-
很公平。我实际上不知道它们曾经存在过,所以我认为它们是最近添加的,因此我很困惑。