Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
di::any Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  AnyT
 
struct  HybridStorage
 
struct  InlineStorage
 
struct  InlineVTable
 
struct  MaybeInlineVTable
 
struct  OutOfLineVTable
 
class  RefStorage
 
struct  SharedStorage
 
struct  UniqueStorage
 

Typedefs

template<concepts::Interface UserInterface, concepts::AnyStorage Storage = HybridStorage<>, typename VTablePolicy = MaybeInlineVTable<3>>
using Any = meta::Type<AnyT<UserInterface, Storage, VTablePolicy>>
 
template<concepts::Interface Interface, StorageCategory storage_category = StorageCategory::MoveOnly, size_t inline_size = 2 * sizeof(void*), size_t inline_align = alignof(void*), concepts::Allocator Alloc = platform::DefaultAllocator>
using AnyHybrid = Any<Interface, HybridStorage<storage_category, inline_size, inline_align, Alloc>>
 
template<concepts::Interface Interface, size_t inline_size = 2 * sizeof(void*), size_t inline_align = alignof(void*)>
using AnyInline = Any<Interface, InlineStorage<inline_size, inline_align>>
 
template<concepts::Interface Interface>
using AnyRef = Any<Interface, RefStorage>
 
template<concepts::Interface Interface, concepts::Allocator Alloc = platform::DefaultAllocator>
using AnyShared = Any<Interface, SharedStorage<Alloc>>
 
template<concepts::Interface Interface, concepts::Allocator Alloc = platform::DefaultAllocator>
using AnyUnique = Any<Interface, UniqueStorage<Alloc>>
 
template<typename Self, concepts::LanguageFunction Sig, typename... Tags>
using Dispatcher = detail::DispatcherImpl<Self, Sig, Tags...>
 

Enumerations

enum class  StorageCategory {
  Reference , Trivial , TriviallyRelocatable , Immovable ,
  MoveOnly , Copyable , InfalliblyCloneable , Cloneable
}
 

Typedef Documentation

◆ Any

template<concepts::Interface UserInterface, concepts::AnyStorage Storage = HybridStorage<>, typename VTablePolicy = MaybeInlineVTable<3>>
using di::any::Any = meta::Type<AnyT<UserInterface, Storage, VTablePolicy>>

◆ AnyHybrid

template<concepts::Interface Interface, StorageCategory storage_category = StorageCategory::MoveOnly, size_t inline_size = 2 * sizeof(void*), size_t inline_align = alignof(void*), concepts::Allocator Alloc = platform::DefaultAllocator>
using di::any::AnyHybrid = Any<Interface, HybridStorage<storage_category, inline_size, inline_align, Alloc>>

◆ AnyInline

template<concepts::Interface Interface, size_t inline_size = 2 * sizeof(void*), size_t inline_align = alignof(void*)>
using di::any::AnyInline = Any<Interface, InlineStorage<inline_size, inline_align>>

◆ AnyRef

template<concepts::Interface Interface>
using di::any::AnyRef = Any<Interface, RefStorage>

◆ AnyShared

template<concepts::Interface Interface, concepts::Allocator Alloc = platform::DefaultAllocator>
using di::any::AnyShared = Any<Interface, SharedStorage<Alloc>>

◆ AnyUnique

template<concepts::Interface Interface, concepts::Allocator Alloc = platform::DefaultAllocator>
using di::any::AnyUnique = Any<Interface, UniqueStorage<Alloc>>

◆ Dispatcher

template<typename Self, concepts::LanguageFunction Sig, typename... Tags>
using di::any::Dispatcher = detail::DispatcherImpl<Self, Sig, Tags...>

Enumeration Type Documentation

◆ StorageCategory

enum class di::any::StorageCategory
strong
Enumerator
Reference 
Trivial 
TriviallyRelocatable 
Immovable 
MoveOnly 
Copyable 
InfalliblyCloneable 
Cloneable