23 General utilities library [utilities]

23.6 Optional objects [optional]

23.6.9 Specialized algorithms [optional.specalg]

template <class T> void swap(optional<T>& x, optional<T>& y) noexcept(noexcept(x.swap(y)));

Effects: Звонки x.swap(y).

Remarks: Эта функция не будет участвовать в разрешении перегрузки , если is_­move_­constructible_­v<T> не true и is_­swappable_­v<T> является true.

template <class T> constexpr optional<decay_t<T>> make_optional(T&& v);

Returns: optional<decay_­t<T>>(std​::​forward<T>(v)).

template <class T, class...Args> constexpr optional<T> make_optional(Args&&... args);

Effects: Эквивалентен: return optional<T>(in_­place, std​::​forward<Args>(args)...);

template <class T, class U, class... Args> constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);

Effects: Эквивалентен: return optional<T>(in_­place, il, std​::​forward<Args>(args)...);