@ user1391279 У меня не было ответов на этот вопрос, и я должен признать, что это не то, чем вы можете воспользоваться. Это просто интересное упражнение, которое я выполнил с Boost, и теперь стало намного проще с введением переменных параметров шаблона.
я есть следующая шаблонная структура класса
struct TraitA{};
struct TraitB{};
template<typename trait>
struct FunctionalityA{};
template<typename trait>
struct FunctionalityB{};
template<typename Func>
struct FuncUserA{};
template<typename Func>
struct FuncUserB{};
template<typename fuser>
struct Host{};
Класс Host теперь может иметь следующие типы.
typedef Host<FuncUserA<FunctionalityA<TraitA> > > Host1_t;
typedef Host<FuncUserA<FunctionalityA<TraitB> > > Host2_t;
typedef Host<FuncUserA<FunctionalityB<TraitA> > > Host3_t;
typedef Host<FuncUserA<FunctionalityB<TraitB> > > Host4_t;
typedef Host<FuncUserB<FunctionalityA<TraitA> > > Host5_t;
typedef Host<FuncUserB<FunctionalityA<TraitB> > > Host6_t;
typedef Host<FuncUserB<FunctionalityB<TraitA> > > Host7_t;
typedef Host<FuncUserB<FunctionalityB<TraitB> > > Host8_t;
Есть ли способ создать список типов с помощью Boost :: MPL? На данный момент у меня даже нет идеи, с чего начать. Моей целью было бы иметь такую функцию:
template<class T>
T* getHost()
{
typedef boost::mpl::find<HostVector, T>::type MplIter;
return new MplIter;
}
Это возможно с boost :: mpl?