0

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

我看到std::variant_alternative提供了。这可以用来生成boost::mpl::for_each可以摄取的类型列表吗?或者它是否支持不同的迭代策略?

4

1 回答 1

4

我对 Boost.MPL 不是 100% 熟悉,但这应该可以满足您的需求:

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 上现场观看

于 2019-09-20T10:55:55.093 回答