Simulant  21.06-50
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
Public Member Functions | Friends | List of all members
smlt::variant< Ts > Class Template Reference

Public Member Functions

 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)
 
variantoperator= (const variant &)=default
 
variantoperator= (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>
variantoperator= (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)
 

Friends

struct detail::access::variant
 
struct detail::visitation::variant
 

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