【发布时间】:2017-01-10 17:02:27
【问题描述】:
我有一个hana::tuple_t<int, char, double, float>,我想用它来创建一个hana::tuple<int, char, double, float>。
我认为使用hana::to<hana::tuple_tag> 会将hana::tuple_t<int, char, double, float> 转换为hana::tuple<int, char, double, float>;但事实并非如此,因为以下总是失败:
auto oType = hana::tuple_t<int, char, double, float>;
BOOST_HANA_CONSTANT_ASSERT(
hana::to<hana::tuple_tag>(oType)
==
hana::make_tuple(1, 'C', 1.0, 1.0f)
);
我也尝试过使用hana::transform,但没有成功(虽然我怀疑我做错了):
auto vecs = hana::transform(typeList, [](auto t) {
return typename decltype(t)::type{};
});
那么,我该如何将一个 hana::tuple_t 变成一个 hana::tuple?
【问题讨论】:
-
默认初始化将产生一个值
0,而不是1(或1.0,或'C')。您是否尝试过将其与元组hana::make_tuple(0, '\0', 0.0, 0.0f)进行比较? -
是的,我试过了。编译器错误:Severity static_assert failed "hana::to<:tuple_tag>(oType) == hana::make_tuple(0, 0.0, 0.0f)"
标签: c++ boost-hana typelist