This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.

201. Numeric limits terminology wrong

Section: 21.3 [support.limits] Status: CD1 Submitter: Stephen Cleary Opened: 1999-12-21 Last modified: 2017-06-15

Priority: Not Prioritized

View all issues with CD1 status.


In some places in this section, the terms "fundamental types" and "scalar types" are used when the term "arithmetic types" is intended. The current usage is incorrect because void is a fundamental type and pointers are scalar types, neither of which should have specializations of numeric_limits.

[Lillehammer: it remains true that numeric_limits is using imprecise language. However, none of the proposals for changed wording are clearer. A redesign of numeric_limits is needed, but this is more a task than an open issue.]

Proposed resolution:

Change 21.3 [support.limits] to:

-1- The headers <limits>, <climits>, <cfloat>, and <cinttypes> supply characteristics of implementation-dependent fundamental arithmetic types (3.9.1).

Change [limits] to:

-1- The numeric_limits component provides a C++ program with information about various properties of the implementation's representation of the fundamental arithmetic types.

-2- Specializations shall be provided for each fundamental arithmetic type, both floating point and integer, including bool. The member is_specialized shall be true for all such specializations of numeric_limits.

-4- Non-fundamentalarithmetic standard types, such as complex<T> (26.3.2), shall not have specializations.

Change 21.3.4 [numeric.limits] to:

-1- The member is_specialized makes it possible to distinguish between fundamental types, which have specializations, and non-scalar types, which do not.