Let's say I have a template class over one size a one type:
template<size_t N, typename T>
class C
{};
I want to generate a boost::variant
which is capable of holding this class over several sizes and types, e.g. for sizes 1
and 2
and types int
and unsigned int
it will be
typedef boost::variant<
C<1, int>,
C<1, unsigned int>,
C<2, int>,
C<2, unsigned int>
> my_variant;
The problem is that I need this setting in several places and each time with different sizes and types. Is there some template meta-programming magic to generate these variants from the list of possible values, something along the lines of
typedef generate_variant<C, 1, 2, int, unsigned int>::type my_variant;