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

### 2518. [fund.ts.v2] Non-member `swap` for `propagate_const` should call member `swap`

Section: 3.7.10 [fund.ts.v2::propagate_const.algorithms] Status: TS Submitter: Tim Song Opened: 2015-07-08 Last modified: 2017-07-30

Priority: 3

View all issues with TS status.

Discussion:

Addresses: fund.ts.v2

For consistency with the rest of the standard library, the non-member `swap` for `propagate_const` should call member `swap`.

[2015-07, Telecon]

Both P3 and NAD were suggested.

[2016-02-20, Ville comments]

Feedback from an implementation:

The implementation of `propagate_const` in libstdc++ calls `propagate_const`'s member `swap` from the non-member `swap`.

[2016-11-08, Issaquah]

Adopted during NB comment resolution

Proposed resolution:

This wording is relative to N4529.

1. Edit [propagate_const.algorithms] as indicated:

   >     -1- template <class T>
   >     constexpr void swap(propagate_const<T>& pt1, propagate_const<T>& pt2) noexcept(see below)

   > > -2- The constant-expression in the exception-specification is `noexcept(swap(pt1.t_, pt2.t_)pt1.swap(pt2))`.

   > > -3- Effects: `swap(pt1.t_, pt2.t_)pt1.swap(pt2)`.