Всем добрый день.
Есть следующая структура, самое важное что все наиболее вложенные структуры наследуют от одного типа, что позволяет написать следующий код:
struct BHeader
{
};
struct All
{
struct Part1
{
struct Part1Sub1 : BHeader
{
};
struct Part1Sub2 : BHeader
{
};
};
struct Part2
{
struct Part2Sub1 : BHeader
{
};
struct Part2Sub2 : BHeader
{
};
};
};
class Processor
{
public:
/// Общий случай
template <typename T>
void operator()(T::BHeader*)
{
}
/// Частные случаи
void operator()(All::Part1::Part1Sub1::BHeader*)
{
}
......
};
Но иногда хочется получить еще и средний вариант частного случая, наподобие:
template <typename T>
void operator()(All::Part1::T::BHeader*)
{
}
Подскажите плиз как можно добавить такой функционал.