下面的代码:为什么数字10参考整数类型0?
#include <iostream>
#include <limits>
#include <cstdint>
int main()
{
std::cout << std::numeric_limits<std::uint64_t>::digits10 << "\n"
<< std::numeric_limits<std::uint64_t&>::digits10 << "\n";
}
输出
我希望std::uint64_t&
有相同的值std::uint64_t
:是否有这种差异的一个原因?
'的std :: numeric_limits'不擅长该类型,所以它默认为0。 – 0x499602D2 2015-04-01 13:59:09
从语言设计的角度来看,不应该默认为编译错误吗? – 2015-04-01 14:00:59
没有具体的原因 - 它只是使参考类型在'numeric_limits'中具有相同的值,因为非参考需要额外的努力,并且没有人认为它会使您方便。如果你关心你,你可以'std :: remove_reference :: type'。 –
milleniumbug
2015-04-01 14:04:30