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.

Discussion:

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 20.14.6 [refwrap]:

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

Change Placeholders 20.14.15.5 [func.bind.place]:

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

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

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

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

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

Change traits typedefs 21.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 26.6.8.1 [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.