This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofResolved status.
scoped_allocator_adaptor piecewise construction does not requireCopyConstructibleSection: 20.6.4[allocator.adaptor.members]Status:ResolvedSubmitter: David KraussOpened: 2015-06-16Last modified: 2020-09-06
Priority:3
View all otherissues in [allocator.adaptor.members].
View all issues withResolved status.
Discussion:
20.6.4[allocator.adaptor.members]/10 requires that the argument types in the piecewise-construction tuples all beCopyConstructible. These tuples are typically created bystd::forward_as_tuple, such as in ¶13. So they will be a mix of lvalue and rvalue references, the latter of which are notCopyConstructible.
CopyConstructible was specified to feed thetuple_cat, before that function could handle rvalues. Since the argument tuple is already moved in ¶11, the requirement is obsolete. It should either be changed toMoveConstructible, or perhaps better, convert the whole tuple to references (i.e. formtuple<Args1&&...>) so nothing needs to be moved. After all, this is a facility for handling non-movable types.It appears that the resolution of DR2203(i), which addedstd::move to ¶11, simply omitted the change to ¶10.[2016-11-08, Jonathan comments]
My paperP0475R0 provides a proposed resolution.
[2018-06 set to 'Resolved']
P0475R1 was adopted in Rapperswil.
Proposed resolution: