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: 17.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.

Discussion:

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 17.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-fundamental arithmetic standard types, such as `complex<T>` (26.3.2), shall not have specializations.

Change 17.3.5 [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.