Я использую hana:tuple_t
для хранения и получения списка типов:
auto Types = hana::tuple_t<int, double>;
auto first_t = Types[hana::int_c<0>];
static_assert(std::is_same_v<decltype(first_t)::type, int>); // line 3
Приведенный выше код работает правильно, однако, когда я пытался заменить переменную first_t
ее действительным выражением:
static_assert(std::is_same_v<decltype(Types[hana::int_c<0>])::type, int>); //line 4
Я получаю ошибку компиляции:
template argument 1 is invalid
static_assert(std::is_same_v<decltype(Types[hana::int_c<0>])::type, int>);
error: decltype evaluates to ‘const boost::hana::type_impl<int>::_&’, which is not a class or enumeration type
Строка 3 и строка 4 приведенного выше кода эквивалентны, почему я получаю ошибку компиляции для строки 4: