У меня есть hana::tuple_t<int, char, double, float>
, и я хочу использовать его для создания hana::tuple<int, char, double, float>
.Переход от hana :: tuple_t к hana :: tuple
Я думал, что использование 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)'? – Cornstalks
Да, я пробовал это. Ошибки компилятора: Уровень \t \t static_assert failed "hana :: to (oType) == hana :: make_tuple (0, 0.0, 0.0f)" –
Acorn