Created on 2007-10-10.00:00:00 last changed 172 months ago
Proposed resolution:
Change [meta.unary.prop]:
has_trivial_copy_constructorT is a trivial type (3.9) or a reference type or a class type
with a trivial copy constructorwhere all copy constructors are trivial (12.8).
has_trivial_assignT is neither const nor a reference type, and T is a trivial type (3.9) or a class type
with a trivial copy assignment operatorwhere all copy assignment operators are trivial (12.8).
has_nothrow_copy_constructorhas_trivial_copy_constructor<T>::value is true or T is a class type
with awhere all copy constructorsthat isare known not to throw any exceptions or T is an array of such a class type
has_nothrow_assignT is neither const nor a reference type, and has_trivial_assign<T>::value is true or T is a class type
with awhere all copy assignment operators takeingan lvalue of type T that is known not to throw any exceptions or T is an array of such a class type.
Unfortunately a class can have multiple copy constructors, and I believe to be useful this trait should only return true is ALL copy constructors are no-throw.
For instance:
struct awkward { awkward( const awkward & ) throw() {} awkward( awkward & ) { throw "oops"; } };
History | |||
---|---|---|---|
Date | User | Action | Args |
2010-10-21 18:28:33 | admin | set | messages: + msg3647 |
2007-10-10 00:00:00 | admin | create |