template<class T>
constexpr void swap(optional<T>& x, optional<T>& y) noexcept(noexcept(x.swap(y));
template<class T> constexpr optional<decay_t<T>> make_optional(T&& v);
template<class T, class.Args>
constexpr optional<T> make_optional(Args&&. args);