Movatterモバイル変換


[0]ホーム

URL:



This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofCD1 status.

749. Currentlyhas_nothrow_copy_constructor<T>::value is true ifT has 'a' nothrow copy constructor.

Section: 21.3.6.4[meta.unary.prop]Status:CD1Submitter: Alisdair MeredithOpened: 2007-10-10Last modified: 2016-01-28

Priority:Not Prioritized

View otheractive issues in [meta.unary.prop].

View all otherissues in [meta.unary.prop].

View all issues withCD1 status.

Discussion:

Unfortunately a class can have multiple copy constructors, and I believe tobe useful this trait should only return true is ALL copy constructors areno-throw.

For instance:

struct awkward { awkward( const awkward & ) throw() {} awkward( awkward & ) { throw "oops"; } };

Proposed resolution:

Change 21.3.6.4[meta.unary.prop]:

has_trivial_copy_constructor

T is a trivial type (3.9) or a reference type or a class typewith a trivial copy constructorwhere all copy constructors are trivial (12.8).

has_trivial_assign

T is neitherconst nor a reference type, andT is a trivial type (3.9)or a class typewith a trivial copy assignment operatorwhere all copy assignment operators are trivial (12.8).

has_nothrow_copy_constructor

has_trivial_copy_constructor<T>::value istrue orT is a class typewithawhere all copy constructorsthat isare known not to throw any exceptions orT is anarray of such a class type

has_nothrow_assign

T is neitherconst nor a reference type, andhas_trivial_assign<T>::value istrue orT is a class typewith awhere all copyassignment operators takeing an lvalue of typeT that is known not tothrow any exceptions orT is an array of such a class type.


[8]ページ先頭

©2009-2026 Movatter.jp