Namespaces
Variants

std::experimental::propagate_const<T>:: swap

From cppreference.net
constexpr void swap ( propagate_const & pt ) noexcept ( /* см. ниже */ ) ;
(техническая спецификация библиотеки fundamentals v2)

Обменивает обёрнутый указатель с указателем из pt . Пусть t_ обозначает приватный член данных, который является обёрнутым указателем или указатель-подобным объектом, тогда эта функция эквивалентна swap ( t_, pt. t_ ) , где разрешение перегрузки для swap выполняется среди std::swap и любых объявлений, найденных по обычным правилам поиска, как описано в Swappable .

Поведение не определено, если lvalue типа T не удовлетворяют требованиям Swappable .

Параметры

pt - другой объект propagate_const для обмена

Исключения

noexcept спецификация:
noexcept ( noexcept ( swap ( t_, pt. t_ ) ) )
Поиск идентификатора swap в спецификации исключений находит перегрузки, описанные выше, и не находит саму функцию-член, что делает спецификацию исключений эквивалентной C++17 std::is_nothrow_swappable .
(library fundamentals TS v2)
noexcept спецификация:
(library fundamentals TS v3)

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3413 LFTSv2 спецификация исключения была некорректной исправлена