5 #include "../Basics/static_warning.hpp"
42 template<
class T,
class ... CArgs >
43 T *
create( CArgs
const & ... );
54 template<
class T,
class ... CArgs >
66 template<
class T,
class ... CArgs >
70 using Deleter = void(*)(
void*);
77 Item() : identity(
nullptr ), deleter(
nullptr ){}
78 Item(
void * i, Deleter d ) : identity( i ), deleter( d ){}
82 static void DeleterImpl(
void * ptr );
84 template<
class T, std::enable_if_t< std::is_polymorphic_v< T >,
int > = 0 >
85 static void * identity_cast( T * ptr );
87 template<
class T, std::enable_if_t< !std::is_polymorphic_v< T >,
int > = 0 >
88 static void * identity_cast( T * ptr );
93 std::vector< Item > items;