1117. tuple copy constructor

Section: 23.5.3.1 [tuple.cnstr] Status: Resolved Submitter: Alisdair Meredith Opened: 2009-05-23 Last modified: 2016-02-10

Priority: Not Prioritized

View other active issues in [tuple.cnstr].

View all other issues in [tuple.cnstr].

View all issues with Resolved status.

Discussion:

The copy constructor for the tuple template is constrained. This seems an unusual strategy, as the copy constructor will be implicitly deleted if the constraints are not met. This is exactly the same effect as requesting an =default; constructor. The advantage of the latter is that it retains triviality, and provides support for tuples as literal types if issue 1116 is also accepted.

Actually, it might be worth checking with core if a constrained copy constructor is treated as a constructor template, and as such does not suppress the implicit generation of the copy constructor which would hide the template in this case.

[ 2009-05-27 Daniel adds: ]

This would solve one half of the suggested changes in 801.

[ 2009-10 Santa Cruz: ]

NAD EditorialResolved. Solved by N2994.

Proposed resolution:

Change 23.5.3 [tuple.tuple] and 23.5.3.1 [tuple.cnstr] p4:

requires CopyConstructible<Types>... tuple(const tuple&) = default;