std :: variant是否提供与boost :: variant <> :: types类似的功能?

时间:2019-09-20 08:58:49

标签: c++ c++17 boost-variant boost-mpl std-variant

boost::variant通过boost::variant<>::types公开其变体类型列表,可以方便地与boost::mpl::for_each一起使用。 std::variant缺少这样的成员。

我看到提供了std::variant_alternative。可以用来产生boost::mpl::for_each可以摄取的类型列表吗?还是启用了其他迭代策略?

1 个答案:

答案 0 :(得分:3)

我不是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;

See it live on Wandbox