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

**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 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_limitscomponent 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, includingbool. The memberis_specializedshall betruefor all such specializations ofnumeric_limits.-4- Non-

~~fundamental~~arithmetic standard types, such ascomplex<T>(26.3.2), shall not have specializations.

Change 21.3.4 [numeric.limits] to:

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