【发布时间】:2015-11-12 18:56:08
【问题描述】:
如果我有一个变体,像这样:
using my_variant = boost::variant<int, bool, std::string>;
有没有一种简单的方法可以将变体可以包含的类型提取到 Boost.Hana 元组中,以便以下内容成立:
using boost::hana::type;
static_assert(std::is_same<my_tuple, boost::hana::tuple<type<int>, type<bool>, type<std::string>>>{});
【问题讨论】:
-
澄清一下;你想要
hana::tuple<int, bool, std::string>,还是hana::tuple<hana::type<int>, hana::type<bool>, hana::type<std::string>>。换句话说,你想要一个 types 的元组,还是一个包含 objects 的元组,其类型是变体的类型? -
类型元组。编辑了问题:)
-
虽然也可以做一些通用的事情,ala
meta::as_list会很好(有吗?在文档中看不到) -
不,现在没有。然而,我一直在思考这个问题,但我从来没有真正找到一个令人满意的名字:github.com/boostorg/hana/issues/67。但是,我们将能够使用
boost::variant<>::types是 MPL 序列这一事实。我正在写我的答案。 -
如果您需要此功能用于任意模板,让我们在github.com/boostorg/hana/issues/67 上讨论它。我同意它会很有用,但我只需要一点说服力和一些帮助来命名这样的功能。
标签: c++ template-meta-programming boost-hana