ranges::make_optional (Args &&... args) noexcept(noexcept(optional< T >{in_place, static_cast< Args && >(args)...})) -> decltype(optional< T >
template<typename T , typename U , typename... Args>
constexpr auto
ranges::make_optional (std::initializer_list< U > il, Args &&... args) noexcept(noexcept(optional< T >{in_place, il, static_cast< Args && >(args)...})) -> decltype(optional< T >
template<typename T >
constexpr auto
ranges::make_optional (T &&t) noexcept(noexcept(optional< detail::decay_t< T >>{static_cast< T && >(t)})) -> decltype(optional< detail::decay_t< T >>