886. tuple construction

Section: 23.5.3.1 [tuple.cnstr] Status: C++11 Submitter: Alisdair Meredith Opened: 2008-09-15 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 C++11 status.

Discussion:

23.5.3.1 [tuple.cnstr]:

Effects: Default initializes each element.

Could be clarified to state each "non-trivial" element. Otherwise we have a conflict with Core deinfition of default initialization - trivial types do not get initialized (rather than initialization having no effect)

I'm going to punt on this one, because it's not an issue that's related to concepts. I suggest bringing it to Howard's attention on the reflector.

[ San Francisco: ]

Text in draft doesn't mean anything, changing to "non-trivial" makes it meaningful.

We prefer "value initializes". Present implementations use value-initialization. Users who don't want value initialization have alternatives.

Request resolution text from Alisdair.

This issue relates to Issue 868 default construction and value-initialization.

[ 2009-05-04 Alisdair provided wording and adds: ]

Note: This IS a change of semantic from TR1, although one the room agreed with during the discussion. To preserve TR1 semantics, this would have been worded:

requires DefaultConstructible<Types>... tuple();

-2- Effects: Default-initializes each non-trivial element.

[ 2009-07 Frankfurt ]

Move to Ready.

Proposed resolution:

Change p2 in Construction 23.5.3.1 [tuple.cnstr]:

requires DefaultConstructible<Types>... tuple();

-2- Effects: Default Value-initializes each element.