|
| variant (const variant &)=default |
|
| variant (variant &&)=default |
|
template<typename Arg , typename Decayed = lib::decay_t<Arg>, lib::enable_if_t<!std::is_same< Decayed, variant >::value, int > = 0, lib::enable_if_t<!detail::is_in_place_index< Decayed >::value, int > = 0, lib::enable_if_t<!detail::is_in_place_type< Decayed >::value, int > = 0, std::size_t I = detail::best_match<Arg, Ts...>::value, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t< std::is_constructible< T, Arg >::value, int > = 0> |
constexpr | variant (Arg &&arg) noexcept(std::is_nothrow_constructible< T, Arg >::value) |
|
template<std::size_t I, typename... Args, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t< std::is_constructible< T, Args... >::value, int > = 0> |
constexpr | variant (in_place_index_t< I >, Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value) |
|
template<std::size_t I, typename Up , typename... Args, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t< std::is_constructible< T, std::initializer_list< Up > &, Args... >::value, int > = 0> |
constexpr | variant (in_place_index_t< I >, std::initializer_list< Up > il, Args &&... args) noexcept(std::is_nothrow_constructible< T, std::initializer_list< Up > &, Args... >::value) |
|
template<typename T , typename... Args, std::size_t I = detail::find_index_sfinae<T, Ts...>::value, lib::enable_if_t< std::is_constructible< T, Args... >::value, int > = 0> |
constexpr | variant (in_place_type_t< T >, Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value) |
|
template<typename T , typename Up , typename... Args, std::size_t I = detail::find_index_sfinae<T, Ts...>::value, lib::enable_if_t< std::is_constructible< T, std::initializer_list< Up > &, Args... >::value, int > = 0> |
constexpr | variant (in_place_type_t< T >, std::initializer_list< Up > il, Args &&... args) noexcept(std::is_nothrow_constructible< T, std::initializer_list< Up > &, Args... >::value) |
|
variant & | operator= (const variant &)=default |
|
variant & | operator= (variant &&)=default |
|
template<typename Arg , lib::enable_if_t<!std::is_same< lib::decay_t< Arg >, variant >::value, int > = 0, std::size_t I = detail::best_match<Arg, Ts...>::value, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t<(std::is_assignable< T &, Arg >::value &&std::is_constructible< T, Arg >::value), int > = 0> |
variant & | operator= (Arg &&arg) noexcept((std::is_nothrow_assignable< T &, Arg >::value &&std::is_nothrow_constructible< T, Arg >::value)) |
|
template<std::size_t I, typename... Args, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t< std::is_constructible< T, Args... >::value, int > = 0> |
T & | emplace (Args &&... args) |
|
template<std::size_t I, typename Up , typename... Args, typename T = lib::type_pack_element_t<I, Ts...>, lib::enable_if_t< std::is_constructible< T, std::initializer_list< Up > &, Args... >::value, int > = 0> |
T & | emplace (std::initializer_list< Up > il, Args &&... args) |
|
template<typename T , typename... Args, std::size_t I = detail::find_index_sfinae<T, Ts...>::value, lib::enable_if_t< std::is_constructible< T, Args... >::value, int > = 0> |
T & | emplace (Args &&... args) |
|
template<typename T , typename Up , typename... Args, std::size_t I = detail::find_index_sfinae<T, Ts...>::value, lib::enable_if_t< std::is_constructible< T, std::initializer_list< Up > &, Args... >::value, int > = 0> |
T & | emplace (std::initializer_list< Up > il, Args &&... args) |
|
constexpr bool | valueless_by_exception () const noexcept |
|
constexpr std::size_t | index () const noexcept |
|
template<bool Dummy = true, lib::enable_if_t< lib::all< Dummy,(lib::dependent_type< std::is_move_constructible< Ts >, Dummy >::value &&lib::dependent_type< lib::is_swappable< Ts >, Dummy >::value)... >::value , int > |
void | swap (variant &that) noexcept(lib::all<(std::is_nothrow_move_constructible< Ts >::value &&lib::is_nothrow_swappable< Ts >::value)... >::value) |
|