Document number: P0503R0
Project: Programming Language C++
Audience: Library Working Group
Erich Keane <>
Date: 2016-11-09

Correcting library usage of "literal type"

I. Introduction and Motivation

A number of National Body Comments [P0488R0] (GB68, US155, US154) point out that the application of "literal type" to a number of locations is too strict, and not what is intended as a constraint for the type.

II. Impact on the Standard

This proposal alters the wording for a number of components to the library, however the changes are largely editorial.

III. Proposed wording relative to the Working Draft N4606.

Note for editor: Remove the note in 20.8.3¶1[any.class]:

        [ Note: any is not a literal type. — end note ]

Note for editor: Replace the following paragraphs in [istream.iterator.cons]:

        ¶1: Effects: Constructs the end-of-stream iterator. If T is a literal typeis_trivially_default_constructible_v<T> is true, then this constructor shall beis a constexpr constructor.
        ¶5: Effects: Constructs a copy of x. If T is a literal typeis_trivially_copy_constructible_v<T> is true, then this constructor shall beis a trivial copy constructor.
        ¶7: Effects: The iterator is destroyed. If T is a literal typeis_trivially_destructible_v<T> is true, then this destructor shall beis a trivial destructor.

Note for editor: Alter 20.6.4[optional.nullopt] to reflect the following changes:

        20.7.4[optional.nullopt]:Type nullopt_t shall not have a default constructor. It shall be a literal type.  Constant nullopt shall be initialized with an argument of literal type.

Note for the editor:The usage of literal type in 26.5¶2[complex.numbers] is correct, and should remain(quoted for informational and review purposes).

        26.5¶2[complex.numbers]:The specializations complex<float>,complex<double>, and complex<long double> are literal types (3.9).

IV. Revision History

Revision 0:

V. References

[N4606] C++17 CD Ballot Document. Available online at

[P0488R0] National Body Comments Available online at