28 using ElementType = std::remove_cvref_t<decltype(*std::declval<PointerType>())>;
35 template<
typename T>
struct GetTypeInfo<
SPtr<
T>> {
36 static const TypeInfo&
get() {
42 template<
typename T,
typename Deleter>
struct GetTypeInfo<
UPtr<
T, Deleter>> {
43 static const TypeInfo&
get() {
49 template<
typename T>
struct GetTypeInfo<
RC<
T>> {
50 static const TypeInfo&
get() {
60 impl::TConstructibleTypeTrait,
61 impl::TDestructibleTypeTrait,
62 impl::TCopyableTypeTrait,
63 impl::TMovableTypeTrait,
64 impl::TIterableTypeTrait,
65 impl::TPushBackableTypeTrait,
66 impl::TIndexableTypeTrait,
67 impl::TInsertableTypeTrait,
68 impl::TErasableTypeTrait
81 template<
typename T,
typename Allocator>
struct GetTypeInfo<
Vector<
T, Allocator>> {
82 static const TypeInfo&
get() {
88 template<
typename T,
size_t N,
typename Allocator>
struct GetTypeInfo<
SmallVector<
T,
N, Allocator>> {
89 static const TypeInfo&
get() {
95 template<
typename T,
size_t N>
struct GetTypeInfo<
Array<
T,
N>> {
96 static const TypeInfo&
get() {
102 template<
typename T,
typename Allocator>
struct GetTypeInfo<
List<
T, Allocator>> {
103 static const TypeInfo&
get() {
122 template<
typename T>
requires std::input_iterator<T>
123 struct GetTypeInfo<
T> {
124 static const TypeInfo&
get() {
125 static const TIteratorTypeInfo<T, std::input_iterator_tag> type;
Definition TypeInfo.std.hpp:23
T PointerType
Definition TypeInfo.std.hpp:27
StringView getName() const noexcept override
Definition TypeInfo.std.hpp:32
std::remove_cvref_t< decltype(*std::declval< PointerType >())> ElementType
Definition TypeInfo.std.hpp:28
Definition TypeInfo.std.hpp:69
T VectorType
Definition TypeInfo.std.hpp:73
StringView getName() const noexcept override
Definition TypeInfo.std.hpp:78
typename VectorType::value_type ElementType
Definition TypeInfo.std.hpp:74
Definition TypeInfo.std.hpp:111
Definition TypeInfo.core.hpp:843
Definition TypeInfo.hpp:36
Definition Application.hpp:19
std::unique_ptr< T, Deleter > UPtr
UPtr is a smart pointer that owns and manages another object through a pointer and disposes of that o...
Definition SmartPtr.hpp:28
std::shared_ptr< T > SPtr
SPtr is a smart pointer that retains shared ownership of an object through a pointer.
Definition SmartPtr.hpp:37
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
std::list< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > List
List is a container that supports constant time insertion and removal of elements from anywhere in th...
Definition List.hpp:21
sfl::small_vector< T, N, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > SmallVector
SmallVector is a sequence container similar to Vector.
Definition SmallVector.hpp:31
std::array< T, N > Array
Array is a container that encapsulates fixed size arrays.
Definition Array.hpp:17
CountedPtr< T > RC
RC is a smart pointer that retains shared ownership of an object through a pointer.
Definition SmartPtr.hpp:363
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
static const TypeInfo & get()