Iros
 
Loading...
Searching...
No Matches
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type Class Reference

#include <di/any/container/any.h>

Inheritance diagram for di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type:
[legend]

Public Types

using AnyStorage = Storage
 
using Interface = meta::MergeInterfaces<UserInterface, typename Storage::Interface>
 
using VTable = meta::Invoke<VTablePolicy, Interface>
 

Public Member Functions

 Type ()=default
 
 Type (Type const &)=default
 
constexpr Type (Type const &other)
 
 Type (Type &&)=default
 
constexpr Type (Type &&other)
 
template<typename U, typename VU = RemoveConstructQualifiers<U>>
requires (!concepts::DerivedFrom<meta::RemoveCVRef<U>, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::ConstructibleFrom<VU, U &&> && concepts::AnyStorableInfallibly<VU, Storage> && concepts::Impl<VU, Interface>)
constexpr Type (U &&value)
 
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorableInfallibly<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
constexpr Type (InPlaceType< T >, Args &&... args)
 
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorableInfallibly<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
constexpr Type (InPlaceType< T >, std::initializer_list< U > list, Args &&... args)
 
 ~Type ()=default
 
constexpr ~Type ()
 
auto operator= (Type const &) -> Type &requires(is_trivially_copyable)=default
 
auto operator= (Type &&) -> Type &requires(is_trivially_moveable)=default
 
constexpr auto operator= (Type const &other) -> Type &requires(is_copyable)
 
constexpr auto operator= (Type &&other) -> Type &requires(is_moveable)
 
template<typename U, concepts::Impl< Interface > VU = RemoveConstructQualifiers<U>>
requires (!concepts::DerivedFrom<meta::RemoveCVRef<U>, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorableInfallibly<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
constexpr auto operator= (U &&value) -> Type &
 
constexpr auto has_value () const -> bool requires(!is_reference)
 
template<typename U, concepts::Impl< Interface > VU = RemoveConstructQualifiers<U>>
requires (!concepts::RemoveCVRefSameAs<U, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorable<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
constexpr auto emplace (U &&value)
 
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
constexpr auto emplace (InPlaceType< T >, Args &&... args)
 
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
constexpr auto emplace (InPlaceType< T >, std::initializer_list< U > list, Args &&... args)
 
constexpr void reset ()
 

Static Public Member Functions

template<typename U, typename VU = RemoveConstructQualifiers<U>>
requires (!concepts::RemoveCVRefSameAs<U, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorable<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
static constexpr auto create (U &&value)
 
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
static constexpr auto create (InPlaceType< T >, Args &&... args)
 
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
static constexpr auto create (InPlaceType< T >, std::initializer_list< U > list, Args &&... args)
 

Friends

template<typename, typename, typename>
struct detail::MethodImplT
 

Member Typedef Documentation

◆ AnyStorage

template<typename UserInterface, typename Storage, typename VTablePolicy>
using di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::AnyStorage = Storage

◆ Interface

template<typename UserInterface, typename Storage, typename VTablePolicy>
using di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Interface = meta::MergeInterfaces<UserInterface, typename Storage::Interface>

◆ VTable

template<typename UserInterface, typename Storage, typename VTablePolicy>
using di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::VTable = meta::Invoke<VTablePolicy, Interface>

Constructor & Destructor Documentation

◆ Type() [1/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( )
default

◆ Type() [2/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( Type const & )
default

◆ Type() [3/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( Type const & other)
inlineconstexpr

◆ Type() [4/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( Type && )
default

◆ Type() [5/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( Type && other)
inlineconstexpr

◆ Type() [6/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename U, typename VU = RemoveConstructQualifiers<U>>
requires (!concepts::DerivedFrom<meta::RemoveCVRef<U>, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::ConstructibleFrom<VU, U &&> && concepts::AnyStorableInfallibly<VU, Storage> && concepts::Impl<VU, Interface>)
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( U && value)
inlineconstexpr

◆ Type() [7/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorableInfallibly<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( InPlaceType< T > ,
Args &&... args )
inlineconstexpr

◆ Type() [8/8]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorableInfallibly<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::Type ( InPlaceType< T > ,
std::initializer_list< U > list,
Args &&... args )
inlineconstexpr

◆ ~Type() [1/2]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::~Type ( )
default

◆ ~Type() [2/2]

template<typename UserInterface, typename Storage, typename VTablePolicy>
di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::~Type ( )
inlineconstexpr

Member Function Documentation

◆ create() [1/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
static constexpr auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::create ( InPlaceType< T > ,
Args &&... args )
inlinestaticconstexpr

◆ create() [2/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
static constexpr auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::create ( InPlaceType< T > ,
std::initializer_list< U > list,
Args &&... args )
inlinestaticconstexpr

◆ create() [3/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename U, typename VU = RemoveConstructQualifiers<U>>
requires (!concepts::RemoveCVRefSameAs<U, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorable<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
static constexpr auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::create ( U && value)
inlinestaticconstexpr

◆ emplace() [1/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, Args...>)
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::emplace ( InPlaceType< T > ,
Args &&... args )
inlineconstexpr

◆ emplace() [2/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename T, typename U, typename... Args, concepts::Impl< Interface > VT = RemoveConstructQualifiers<T>>
requires (concepts::AnyStorable<VT, Storage> && concepts::ConstructibleFrom<VT, std::initializer_list<U>&, Args...>)
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::emplace ( InPlaceType< T > ,
std::initializer_list< U > list,
Args &&... args )
inlineconstexpr

◆ emplace() [3/3]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename U, concepts::Impl< Interface > VU = RemoveConstructQualifiers<U>>
requires (!concepts::RemoveCVRefSameAs<U, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorable<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::emplace ( U && value)
inlineconstexpr

◆ has_value()

template<typename UserInterface, typename Storage, typename VTablePolicy>
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::has_value ( ) const -> bool requires(!is_reference)
inlineconstexpr

◆ operator=() [1/5]

template<typename UserInterface, typename Storage, typename VTablePolicy>
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::operator= ( Type && ) -> Type &requires(is_trivially_moveable)=default
default

◆ operator=() [2/5]

template<typename UserInterface, typename Storage, typename VTablePolicy>
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::operator= ( Type && other) -> Type& requires(is_moveable)
inlineconstexpr

◆ operator=() [3/5]

template<typename UserInterface, typename Storage, typename VTablePolicy>
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::operator= ( Type const & ) -> Type &requires(is_trivially_copyable)=default
default

◆ operator=() [4/5]

template<typename UserInterface, typename Storage, typename VTablePolicy>
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::operator= ( Type const & other) -> Type& requires(is_copyable)
inlineconstexpr

◆ operator=() [5/5]

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename U, concepts::Impl< Interface > VU = RemoveConstructQualifiers<U>>
requires (!concepts::DerivedFrom<meta::RemoveCVRef<U>, Type> && !concepts::InstanceOf<meta::RemoveCVRef<U>, InPlaceType> && concepts::AnyStorableInfallibly<VU, Storage> && concepts::ConstructibleFrom<VU, U>)
auto di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::operator= ( U && value) -> Type&
inlineconstexpr

◆ reset()

template<typename UserInterface, typename Storage, typename VTablePolicy>
void di::any::AnyT< UserInterface, Storage, VTablePolicy >::Type::reset ( )
inlineconstexpr

Friends And Related Symbol Documentation

◆ detail::MethodImplT

template<typename UserInterface, typename Storage, typename VTablePolicy>
template<typename, typename, typename>
friend struct detail::MethodImplT
friend

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