2282. [fund.ts] Incorrect is_assignable constraint in optional::op=(U&&)

Section: 5.3.3 [fund.ts::optional.object.assign] Status: Resolved Submitter: Howard Hinnant Opened: 2013-08-25 Last modified: 2015-10-26

Priority: Not Prioritized

View all other issues in [fund.ts::optional.object.assign].

View all issues with Resolved status.

Discussion:

Addresses: fund.ts

Minor wording nit in 5.3.3 [fund.ts::optional.object.assign]/p15:

template <class U> optional<T>& operator=(U&& v);

-15- Requires: is_constructible<T, U>::value is true and is_assignable<U, T>::value is true.

Should be:

template <class U> optional<T>& operator=(U&& v);

-15- Requires: is_constructible<T, U>::value is true and is_assignable<T&, U>::value is true.

[2013-09 Chicago:]

Move to Deferred. This feature will ship after C++14 and should be revisited then.

[2014-06-06 pre-Rapperswill]

This issue has been reopened as fundamentals-ts.

[2014-06-07 Daniel comments]

This issue should be set to Resolved, because the wording fix is already applied in the last fundamentals working draft.

[2014-06-16 Rapperswill]

Confirmed that this issue is resolved in the current Library Fundamentals working paper.

Proposed resolution:

This wording is relative to N3691.

  1. Edit 5.3.3 [fund.ts::optional.object.assign] p15 as indicated:

    template <class U> optional<T>& operator=(U&& v);
    

    -15- Requires: is_constructible<T, U>::value is true and is_assignable<U, TT&, U>::value is true.