boost::variant
通过boost::variant<>::types
公开其变体类型列表,可以方便地与boost::mpl::for_each
一起使用。 std::variant
缺少这样的成员。
我看到提供了std::variant_alternative
。可以用来产生boost::mpl::for_each
可以摄取的类型列表吗?还是启用了其他迭代策略?
答案 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;