@ 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?

Ответы на вопрос(2)

Ваш ответ на вопрос