Согласно стандарту C ++ (n4659), в шаблоне класса numeric_limits
значением по умолчанию для max_digits10
является 0
.
21.3.4 Шаблон класса numeric_limits [numeric.limits]
namespace std {
template<class T> class numeric_limits {
public:
...
static constexpr int max_digits10 = 0;
И только в том случае, если шаблон специализирован для float
, double
и т. Д., max_digits10
задается конкретное значение.
Рассмотрим специализацию для float
.
21.3.4.2 numeric_limits specializations [numeric.special]
namespace std {
template<> class numeric_limits<float> {
public:
...
static constexpr int max_digits10 = 9;
Реализации также следуют этому.См., Например, стандартный заголовок библиотеки C ++ библиотеки GCC limit .
Так, за исключением специализаций, где max_digits10
задано определенное значение, значением по умолчанию является 0
и , поэтомузначение max_digits10
для ссылок на типы с плавающей запятой также 0
.