This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.

### 886. `tuple` construction

Section: 20.5.3.1 [tuple.cnstr] Status: C++11 Submitter: Alisdair Meredith Opened: 2008-09-15 Last modified: 2016-01-28

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:

20.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 20.5.3.1 [tuple.cnstr]:

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

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