@abs_lord

Как поменять местами элементы в mpl::vector, чтобы производные классы находились раньше их базовых?

У меня есть последовательность типов. Проверить, что все они являются классами и упорядочить их так, чтобы производные классы находились раньше их базовых. Для полученной последовательности проверить, что все классы являются производными от последнего.
Реализовать решение необходимо с помощью Boost::MPL
допустим, у нас дан список типов:
class base1 {};

class child1 : base1 {};

class child2 : child1 {};

class child3 : child2 {};

typedef vector<child2, child1, base1, child3> vec;

Надо, чтобы после применения метафункции получилось: child3, child2, child1, base1
Как я понимаю, надо просто отсортировать вектор, меняя соответствующие типы местами, если первый - предок второго(is_base_of). Подскажите, как реализовать это средствами Boost MPL?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы