1228. User-specialized nothrow type traits

Section: 23.15.4.3 [meta.unary.prop] Status: NAD Submitter: Alisdair Meredith Opened: 2009-10-07 Last modified: 2016-02-10

Priority: Not Prioritized

View other active issues in [meta.unary.prop].

View all other issues in [meta.unary.prop].

View all issues with NAD status.

Discussion:

According to p1 23.15.2 [meta.type.synop]:

The behavior of a program that adds specializations for any of the class templates defined in this subclause is undefined unless otherwise specified.

I believe we should 'otherwise specify' for the nothrow traits, are these are exactly the use cases where the end user actually has more information than the compiler.

[ 2009-10 Santa Cruz: ]

Moved to Open. Definitely need to give the users the ability to ensure that the traits give the right answers. Unsure we want to give them the ability to say this in more than one way. Believes the noexcept proposal already gives this.

[ 2010 Pittsburgh: Moved to NAD, rationale added below. ]

Rationale:

We believe the solution offered by N3050 is superior.

Proposed resolution:

Add the following comment:

user specialization permitted to derive from std::true_type when the operation is known not to throw.

to the following traits in 23.15.4.3 [meta.unary.prop] Table 43 Type property predicates.

[ This may require a new Comments column ]

has_nothrow_default_constructor
has_nothrow_copy_constructor
has_nothrow_assign