为什么数字10用于引用整数类型0?

NoS*_*tAl 5 c++

以下代码:

#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";
}
Run Code Online (Sandbox Code Playgroud)

输出

19
0

我希望std::uint64_t&它具有相同的价值std::uint64_t:这种差异是否有原因?

Guf*_*ffa 1

该类型是一个引用,因此它不是模板应该使用的uint64&算术类型之一。numeric_limits

对于定义的算术类型之外的任何其他类型,使用默认定义,其中包含:

static const int  digits10 = 0;
Run Code Online (Sandbox Code Playgroud)

参考: http: //www.cplusplus.com/reference/limits/numeric_limits/