Предоставляет ли std :: option функциональность, аналогичную boost :: option <> :: types? - PullRequest
0 голосов
/ 20 сентября 2019

boost::variant предоставляет свой список типов вариантов через boost::variant<>::types, который удобно использовать с boost::mpl::for_each.std::variant отсутствует такой член.

Я вижу, std::variant_alternative предоставляется.Может ли это использоваться для создания списка типов, который boost::mpl::for_each может принять?Или это позволяет использовать другую стратегию итерации?

1 Ответ

2 голосов
/ 20 сентября 2019

Я не на 100% знаком с Boost.MPL, но это должно делать то, что вы ищете:

template <class Variant>
struct mpl_types_impl;

template <class... Ts>
struct mpl_types_impl<std::variant<Ts...>> {
    using type = boost::mpl::vector<Ts...>;
};

template <class Variant>
using mpl_types = typename mpl_types_impl<Variant>::type;

Смотрите его в прямом эфире на Wandbox

...