Я пытаюсь выполнить метапрограммирование нескольких шаблонов, и мне нужно "извлечь" самый высокий индекс специализации некоторой структуры в некотором типе.
Например, если у меня есть некоторые типы:
struct A
{
template<unsigned int> struct D;
template<> struct D<0> { };
};
struct B
{
template<unsigned int> struct D;
template<> struct D<0> { };
template<> struct D<1> { };
};
struct C
{
template<unsigned int> struct D;
template<> struct D<0> { };
template<> struct D<1> { };
template<> struct D<2> { };
};
Как я могу написать метафункцию следующим образом:
template<class T>
struct highest_index
{
typedef ??? type;
// could also be: static size_t const index = ???;
};
чтобы дать мне индекс с наивысшим индексом D
, который был специализирован внутри произвольной структуры, такой как выше, без, требующей, чтобы struct явно объявила счет?