boost::hana::is_a
возвращает соответствие тега объекта данному тегу. [ссылка]
Вы не передаете ему тег, вы вместо этого передаете ему hana::type
.
Например, вы можете проверить, является ли аргументhana::type
, а i
будет содержать size_c<0>
(поскольку первый элемент в кортеже уже является hana::type
):
auto i = hana::index_if(t, hana::is_a<hana::type_tag>);
Если вы хотите проверитьравенство для некоторого типа, используйте equal::to
:
auto i = hana::index_if(t, hana::equal.to(hana::type_c<double>));
[Ссылка на hana :: equal]
Живой пример