Section: 23.6 [container.adaptors] Status: C++17 Submitter: Tim Song Opened: 2015-12-08 Last modified: 2017-07-30
Priority: 0
View all other issues in [container.adaptors].
View all issues with C++17 status.
Discussion:
As noted in this
StackOverflow question, 23.6 [container.adaptors] doesn't seem to place any requirement on the first template parameter
(T
) of stack
, queue
, and priority_queue
: the only use of T
is in the default template
argument (which need not be used) for the second template parameter (Container
), while all of the operations of the adaptors
are defined using Container
's member typedefs.
queue<double, deque<std::string>>
or
priority_queue<std::nothrow_t, vector<int>>
, which presumably wasn't intended.
[2016-02, Issues Telecon]
P0; move to Tentatively Ready.
Proposed resolution:
This wording is relative to N4567.
Edit 23.6.1 [container.adaptors.general]/2 as indicated:
-2- The container adaptors each take a
Container
template parameter, and each constructor takes aContainer
reference argument. This container is copied into theContainer
member of each adaptor. If the container takes an allocator, then a compatible allocator may be passed in to the adaptor's constructor. Otherwise, normal copy or move construction is used for the container argument. The first template parameterT
of the container adaptors shall denote the same type asContainer::value_type
.