std::variant 是不是提供类似于 boost::variant<>::types 的功能?
Posted
技术标签:
【中文标题】std::variant 是不是提供类似于 boost::variant<>::types 的功能?【英文标题】:Does std::variant provide functionality similar to boost::variant<>::types?std::variant 是否提供类似于 boost::variant<>::types 的功能? 【发布时间】:2019-09-20 08:58:49 【问题描述】:boost::variant
通过boost::variant<>::types
公开其变体类型列表,可以方便地与boost::mpl::for_each
一起使用。 std::variant
缺少这样的成员。
我看到提供了std::variant_alternative
。这可以用来生成boost::mpl::for_each
可以摄取的类型列表吗?或者它是否支持不同的迭代策略?
【问题讨论】:
真正的问题是什么?你想做什么? 【参考方案1】:我不是 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
【讨论】:
std::tuple
-> std::variant
解决这个问题?
@R2RT 是的,这似乎是个好主意。 叹息 - 编辑:完成,现在为那个挣扎的大脑喝咖啡。以上是关于std::variant 是不是提供类似于 boost::variant<>::types 的功能?的主要内容,如果未能解决你的问题,请参考以下文章
C++17,制作一个使用依赖于模板参数的 std::variant 的可变参数模板?
std::get_if (std::variant) 通过指针而不是值/&/const& 获取变体参数是不是有任何实际原因?