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

972. The term "Assignable" undefined but still in use

Section: 16 [library] Status: NAD Editorial Submitter: Niels Dekker Opened: 2009-01-07 Last modified: 2016-01-28

Priority: Not Prioritized

View other active issues in [library].

View all other issues in [library].

View all issues with NAD Editorial status.


Previous versions of the Draft had a table, defining the Assignable requirement. For example N2134 Table 79, "Assignable requirements". But I guess the term "Assignable" is outdated by now, because the current Committee Draft provides MoveAssignable, CopyAssignable, and TriviallyCopyAssignable concepts instead. And as far as I can see, it no longer has a definition of Assignable. (Please correct me if I'm wrong.) Still the word "Assignable" is used in eight places in the Draft, N2800.

Are all of those instances of "Assignable" to be replaced by "CopyAssignable"?

[ Batavia (2009-05): ]

Move to NAD Editorial.

Proposed resolution:

Change Exception Propagation 17.9.7 [propagation]:

exception_ptr shall be DefaultConstructible, CopyConstructible, CopyAssignable and EqualityComparable.

Change Class template reference_wrapper 22.10.6 [refwrap]:

reference_wrapper<T> is a CopyConstructible and CopyAssignable wrapper around a reference to an object of type T.

Change Placeholders []:

It is implementation defined whether placeholder types are CopyAssignable. CopyAssignable placeholders' copy assignment operators shall not throw exceptions.

Change Class template shared_ptr [util.smartptr.shared]:

Specializations of shared_ptr shall be CopyConstructible, CopyAssignable, and LessThanComparable...

Change Class template weak_ptr [util.smartptr.weak]:

Specializations of weak_ptr shall be CopyConstructible, CopyAssignable, and LessThanComparable...

Change traits typedefs 23.2.3 [char.traits.typedefs] (note: including deletion of reference to 23.1!):

Requires: state_type shall meet the requirements of CopyAssignable (23.1), CopyConstructible (20.1.8), and DefaultConstructible types.

Change Class seed_seq [rand.util.seedseq] (note again: including deletion of reference to 23.1!):

In addition to the requirements set forth below, instances of seed_seq shall meet the requirements of CopyConstructible (20.1.8) and of CopyAssignable (23.1).

Note: The proposed resolution of this issue does not deal with the instance of the term "Assignable" in 99 [auto.ptr], as this is dealt with more specifically by LWG 973, "auto_ptr characteristics", submitted by Maarten Hilferink.