I have a set of classes A, B, C and I want to have access instances of them from generic code by type, f.e
template
newObject()
{
retur
A simple variadic mixin container does the trick:
template < typename T > struct type_tuple_value
{
T value;
type_tuple_value ( T&& arg ) : value(std::forward(arg)) {}
};
template < typename ...T > struct type_tuple : type_tuple_value...
{
template < typename ...Args > type_tuple ( Args&&... args ) :
type_tuple_value(std::forward(args))... {}
template < typename U > U& get() { return type_tuple_value::value; }
template < typename U > const U& get() const { return type_tuple_value::value; }
};
Example