Title
The primary template of std::char_traits is totally underspecified
Status
new
Section
[char.traits.require]
Submitter
Jiang An

Created on 2024-09-08.00:00:00 last changed 3 months ago

Messages

Date: 2024-09-08.11:13:32

Proposed resolution:

This wording is relative to N4988.

  1. Modify [char.traits.require] as indicated:

    -2- The class template

    template<class charT> struct char_traits;
    

    is provided in the header <string> as a basis for explicit and partial specializations. The effect of instantiating the primary template of char_traits is unspecified and possibly makes the program ill-formed.

Date: 2024-09-08.00:00:00

Currently, only explicit specializations of std::char_traits are specified in the standard. Nothing is specified for the primary template except that it's not marked "not defined".

Given some implementations provide the definition of the primary template (perhaps as an extension), it might be better to explicitly say that instantiation of the primary template has unspecified effect. Also, it seems outdated to say "explicit specializations" as partial specializations are possible since C++20.

History
Date User Action Args
2024-09-08 11:13:32adminsetmessages: + msg14364
2024-09-08 00:00:00admincreate