|
constexpr | variant (const variant &)=default |
|
constexpr | variant (const variant &o) |
|
constexpr | variant (variant &&)=default |
|
constexpr | variant (variant &&o) noexcept((std::is_nothrow_move_constructible_v< Ts > &&...)) |
|
template<class T , class M = detail::best_overload_match<T&&, Ts...>, class D = std::decay_t<T>>
requires (not std::is_same_v<D, variant> and not std::is_base_of_v<detail::emplacer_tag, D>) |
constexpr | variant (T &&t) noexcept(std::is_nothrow_constructible_v< M, T && >) |
|
template<std::size_t Index, class... Args>
requires (Index < size && std::is_constructible_v<alternative<Index>, Args&&...>) |
constexpr | variant (in_place_index_t< Index > tag, Args &&... args) |
|
template<class T , class... Args>
requires (detail::appears_exactly_once<T, Ts...> && std::is_constructible_v<T, Args&&...>) |
constexpr | variant (in_place_type_t< T >, Args &&... args) |
|
template<std::size_t Index, class U , class... Args>
requires ( (Index < size) and std::is_constructible_v<alternative<Index>, std::initializer_list<U>&, Args&&...> ) |
constexpr | variant (in_place_index_t< Index > tag, std::initializer_list< U > list, Args &&... args) |
|
template<class T , class U , class... Args>
requires ( detail::appears_exactly_once<T, Ts...> && std::is_constructible_v<T, std::initializer_list<U>&, Args&&...> ) |
constexpr | variant (in_place_type_t< T >, std::initializer_list< U > list, Args &&... args) |
|
constexpr variant & | operator= (const variant &o) &&trivial_copy_ctor=default |
|
constexpr variant & | operator= (const variant &rhs) |
|
constexpr variant & | operator= (variant &&o)=default |
|
constexpr variant & | operator= (variant &&o) noexcept((std::is_nothrow_move_constructible_v< Ts > &&...) &&(std::is_nothrow_move_assignable_v< Ts > &&...)) |
|
template<class T >
requires detail::has_non_ambiguous_match<T, Ts...> |
constexpr variant & | operator= (T &&t) noexcept(std::is_nothrow_assignable_v< detail::best_overload_match< T &&, Ts... >, T && > &&std::is_nothrow_constructible_v< detail::best_overload_match< T &&, Ts... >, T && >) |
|
template<class T , class... Args>
requires (std::is_constructible_v<T, Args&&...> && detail::appears_exactly_once<T, Ts...>) |
constexpr T & | emplace (Args &&... args) |
|
template<std::size_t Idx, class... Args>
requires (Idx < size and std::is_constructible_v<alternative<Idx>, Args&&...> ) |
constexpr auto & | emplace (Args &&... args) |
|
template<std::size_t Idx, class U , class... Args>
requires (Idx < size && std::is_constructible_v<alternative<Idx>, std::initializer_list<U>&, Args&&...>) |
constexpr auto & | emplace (std::initializer_list< U > list, Args &&... args) |
|
template<class T , class U , class... Args>
requires (std::is_constructible_v<T, std::initializer_list<U>&, Args&&...> && detail::appears_exactly_once<T, Ts...>) |
constexpr T & | emplace (std::initializer_list< U > list, Args &&... args) |
|
constexpr bool | valueless_by_exception () const noexcept |
|
constexpr index_type | index () const noexcept |
|
constexpr void | swap (variant &o) noexcept((std::is_nothrow_move_constructible_v< Ts > &&...) &&(detail::swap_trait::template nothrow< Ts > &&...)) |
|
template<detail::union_index_t Idx> |
constexpr auto & | unsafe_get () &noexcept |
|
template<detail::union_index_t Idx> |
constexpr auto && | unsafe_get () &&noexcept |
|
template<detail::union_index_t Idx> |
constexpr const auto & | unsafe_get () const &noexcept |
|
template<detail::union_index_t Idx> |
constexpr const auto && | unsafe_get () const &&noexcept |
|
template<class... Ts>
class plg::variant< Ts >
Definition at line 544 of file variant.hpp.