увеличить хана index_if и тип - PullRequest
0 голосов
/ 18 сентября 2018

Интересно, почему в этом коде тип i является пустым необязательным.

auto t = boost::hana::make_tuple(boost::hana::type_c<int>, boost::hana::type_c<double>);
auto i = boost::hana::index_if(t, boost::hana::is_a<boost::hana::type<double>>);

Для меня это должно быть optional<hana::size_t<1>>

Я знаю, что есть Повышение хана, получить индекс первого совпадения , но это не совсем тот же вопрос

1 Ответ

0 голосов
/ 18 сентября 2018

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]

Живой пример

...