plugify 1.2.8
|
Public Types | |
using | trivially_relocatable = std::conditional_t< std::conjunction_v< is_trivially_relocatable< Ts >... >, variant, void > |
template<std::size_t Idx> | |
using | alternative = std::remove_reference_t< decltype(std::declval< storage & >().template get< Idx >())> |
using | index_type = detail::smallest_suitable_integer_type< sizeof...(Ts)+can_be_valueless, unsigned char, unsigned short, unsigned > |
Public Member Functions | |
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 |
Static Public Attributes | |
static constexpr bool | can_be_valueless = not is_trivial |
static constexpr unsigned | size = sizeof...(Ts) |
static constexpr index_type | npos = static_cast<index_type>(-1) |
template<class T > | |
static constexpr int | index_of = detail::find_first_true({std::is_same_v<T, Ts>...}) |
Friends | |
template<class T > | |
struct | detail::emplace_no_dtor_from_elem |
Definition at line 541 of file variant.hpp.
using plg::variant< Ts >::alternative = std::remove_reference_t<decltype(std::declval<storage&>().template get<Idx>())> |
Definition at line 559 of file variant.hpp.
using plg::variant< Ts >::index_type = detail::smallest_suitable_integer_type<sizeof...(Ts) + can_be_valueless, unsigned char, unsigned short, unsigned> |
Definition at line 565 of file variant.hpp.
using plg::variant< Ts >::trivially_relocatable = std::conditional_t<std::conjunction_v<is_trivially_relocatable<Ts>...>, variant, void> |
Definition at line 556 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 575 of file variant.hpp.
|
inlineconstexpr |
Definition at line 588 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 600 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 609 of file variant.hpp.
|
inlineexplicitconstexpr |
Definition at line 618 of file variant.hpp.
|
inlineexplicitconstexpr |
Definition at line 625 of file variant.hpp.
|
inlineexplicitconstexpr |
Definition at line 635 of file variant.hpp.
|
inlineexplicitconstexpr |
Definition at line 644 of file variant.hpp.
|
inlineconstexpr |
Definition at line 652 of file variant.hpp.
|
inlineconstexpr |
Definition at line 739 of file variant.hpp.
|
inlineconstexpr |
Definition at line 745 of file variant.hpp.
|
inlineconstexpr |
Definition at line 753 of file variant.hpp.
|
inlineconstexpr |
Definition at line 760 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 772 of file variant.hpp.
|
inlineconstexpr |
Definition at line 664 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 711 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 693 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 778 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 845 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 838 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 859 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 852 of file variant.hpp.
|
inlineconstexprnoexcept |
Definition at line 766 of file variant.hpp.
Definition at line 961 of file variant.hpp.
|
staticconstexpr |
Definition at line 561 of file variant.hpp.
|
staticconstexpr |
Definition at line 570 of file variant.hpp.
|
staticconstexpr |
Definition at line 567 of file variant.hpp.
|
staticconstexpr |
Definition at line 563 of file variant.hpp.