Задать вопрос
@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?
  • Вопрос задан
  • 171 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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