plugify 1.0.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
plg::variant< Ts > Class Template Reference

Public Types

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 &o)
 
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>>
constexpr variant (T &&t) noexcept(std::is_nothrow_constructible_v< M, T && >)
 
template<std::size_t Index, class... Args>
constexpr variant (in_place_index_t< Index > tag, Args &&... args)
 
template<class T , class... Args>
constexpr variant (in_place_type_t< T >, Args &&... args)
 
template<std::size_t Index, class U , class... Args>
constexpr variant (in_place_index_t< Index > tag, std::initializer_list< U > list, Args &&... args)
 
template<class T , class U , class... Args>
constexpr variant (in_place_type_t< T >, std::initializer_list< U > list, Args &&... args)
 
constexpr variantoperator= (const variant &rhs)
 
constexpr variantoperator= (variant &&o) noexcept((std::is_nothrow_move_constructible_v< Ts > &&...) &&(std::is_nothrow_move_assignable_v< Ts > &&...))
 
template<class T >
constexpr variantoperator= (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>
constexpr Templace (Args &&... args)
 
template<std::size_t Idx, class... Args>
constexpr autoemplace (Args &&... args)
 
template<std::size_t Idx, class U , class... Args>
constexpr autoemplace (std::initializer_list< U > list, Args &&... args)
 
template<class T , class U , class... Args>
constexpr Templace (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 autounsafe_get () &noexcept
 
template<detail::union_index_t Idx>
constexpr auto && unsafe_get () &&noexcept
 
template<detail::union_index_t Idx>
constexpr const autounsafe_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
 

Detailed Description

template<class... Ts>
class plg::variant< Ts >

Definition at line 594 of file variant.hpp.

Member Typedef Documentation

◆ alternative

template<class... Ts>
template<std::size_t Idx>
using plg::variant< Ts >::alternative = std::remove_reference_t<decltype(std::declval<storage&>().template get<Idx>())>

Definition at line 610 of file variant.hpp.

◆ index_type

template<class... Ts>
using plg::variant< Ts >::index_type = detail::smallest_suitable_integer_type<sizeof...(Ts) + can_be_valueless, unsigned char, unsigned short, unsigned>

Definition at line 616 of file variant.hpp.

Constructor & Destructor Documentation

◆ variant() [1/8]

template<class... Ts>
constexpr plg::variant< Ts >::variant ( )
inlineconstexprnoexcept

Definition at line 626 of file variant.hpp.

◆ variant() [2/8]

template<class... Ts>
constexpr plg::variant< Ts >::variant ( const variant< Ts > &  o)
inlineconstexpr

Definition at line 643 of file variant.hpp.

◆ variant() [3/8]

template<class... Ts>
constexpr plg::variant< Ts >::variant ( variant< Ts > &&  o)
inlineconstexprnoexcept

Definition at line 659 of file variant.hpp.

◆ variant() [4/8]

template<class... Ts>
template<class T , class M = detail::best_overload_match<T&&, Ts...>, class D = std::decay_t<T>>
constexpr plg::variant< Ts >::variant ( T &&  t)
inlineconstexprnoexcept

Definition at line 670 of file variant.hpp.

◆ variant() [5/8]

template<class... Ts>
template<std::size_t Index, class... Args>
constexpr plg::variant< Ts >::variant ( in_place_index_t< Index tag,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 683 of file variant.hpp.

◆ variant() [6/8]

template<class... Ts>
template<class T , class... Args>
constexpr plg::variant< Ts >::variant ( in_place_type_t< T ,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 692 of file variant.hpp.

◆ variant() [7/8]

template<class... Ts>
template<std::size_t Index, class U , class... Args>
constexpr plg::variant< Ts >::variant ( in_place_index_t< Index tag,
std::initializer_list< U list,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 704 of file variant.hpp.

◆ variant() [8/8]

template<class... Ts>
template<class T , class U , class... Args>
constexpr plg::variant< Ts >::variant ( in_place_type_t< T ,
std::initializer_list< U list,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 715 of file variant.hpp.

◆ ~variant()

template<class... Ts>
plg::variant< Ts >::~variant ( )
inline

Definition at line 734 of file variant.hpp.

Member Function Documentation

◆ emplace() [1/4]

template<class... Ts>
template<class T , class... Args>
constexpr T & plg::variant< Ts >::emplace ( Args &&...  args)
inlineconstexpr

Definition at line 837 of file variant.hpp.

◆ emplace() [2/4]

template<class... Ts>
template<std::size_t Idx, class... Args>
constexpr auto & plg::variant< Ts >::emplace ( Args &&...  args)
inlineconstexpr

Definition at line 845 of file variant.hpp.

◆ emplace() [3/4]

template<class... Ts>
template<std::size_t Idx, class U , class... Args>
constexpr auto & plg::variant< Ts >::emplace ( std::initializer_list< U list,
Args &&...  args 
)
inlineconstexpr

Definition at line 855 of file variant.hpp.

◆ emplace() [4/4]

template<class... Ts>
template<class T , class U , class... Args>
constexpr T & plg::variant< Ts >::emplace ( std::initializer_list< U list,
Args &&...  args 
)
inlineconstexpr

Definition at line 864 of file variant.hpp.

◆ index()

template<class... Ts>
constexpr index_type plg::variant< Ts >::index ( ) const
inlineconstexprnoexcept

Definition at line 876 of file variant.hpp.

◆ operator=() [1/3]

template<class... Ts>
constexpr variant & plg::variant< Ts >::operator= ( const variant< Ts > &  rhs)
inlineconstexpr

Definition at line 749 of file variant.hpp.

◆ operator=() [2/3]

template<class... Ts>
template<class T >
constexpr variant & plg::variant< Ts >::operator= ( T &&  t)
inlineconstexprnoexcept

Definition at line 807 of file variant.hpp.

◆ operator=() [3/3]

template<class... Ts>
constexpr variant & plg::variant< Ts >::operator= ( variant< Ts > &&  o)
inlineconstexprnoexcept

Definition at line 784 of file variant.hpp.

◆ swap()

template<class... Ts>
constexpr void plg::variant< Ts >::swap ( variant< Ts > &  o)
inlineconstexprnoexcept

Definition at line 882 of file variant.hpp.

◆ unsafe_get() [1/4]

template<class... Ts>
template<detail::union_index_t Idx>
constexpr auto && plg::variant< Ts >::unsafe_get ( ) &&
inlineconstexprnoexcept

Definition at line 952 of file variant.hpp.

◆ unsafe_get() [2/4]

template<class... Ts>
template<detail::union_index_t Idx>
constexpr auto & plg::variant< Ts >::unsafe_get ( ) &
inlineconstexprnoexcept

Definition at line 945 of file variant.hpp.

◆ unsafe_get() [3/4]

template<class... Ts>
template<detail::union_index_t Idx>
constexpr const auto && plg::variant< Ts >::unsafe_get ( ) const &&
inlineconstexprnoexcept

Definition at line 966 of file variant.hpp.

◆ unsafe_get() [4/4]

template<class... Ts>
template<detail::union_index_t Idx>
constexpr const auto & plg::variant< Ts >::unsafe_get ( ) const &
inlineconstexprnoexcept

Definition at line 959 of file variant.hpp.

◆ valueless_by_exception()

template<class... Ts>
constexpr bool plg::variant< Ts >::valueless_by_exception ( ) const
inlineconstexprnoexcept

Definition at line 870 of file variant.hpp.

Friends And Related Symbol Documentation

◆ detail::emplace_no_dtor_from_elem

template<class... Ts>
template<class T >
friend struct detail::emplace_no_dtor_from_elem
friend

Definition at line 1068 of file variant.hpp.

Member Data Documentation

◆ can_be_valueless

template<class... Ts>
constexpr bool plg::variant< Ts >::can_be_valueless = not is_trivial
staticconstexpr

Definition at line 612 of file variant.hpp.

◆ index_of

template<class... Ts>
template<class T >
constexpr int plg::variant< Ts >::index_of = detail::find_first_true({std::is_same_v<T, Ts>...})
staticconstexpr

Definition at line 621 of file variant.hpp.

◆ npos

template<class... Ts>
constexpr index_type plg::variant< Ts >::npos = static_cast<index_type>(-1)
staticconstexpr

Definition at line 618 of file variant.hpp.

◆ size

template<class... Ts>
constexpr unsigned plg::variant< Ts >::size = sizeof...(Ts)
staticconstexpr

Definition at line 614 of file variant.hpp.


The documentation for this class was generated from the following file: