提升hana index_if并输入

时间:2018-09-18 14:48:41

标签: c++ boost boost-hana

我想知道为什么在这段代码中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>>

我知道有Boost hana get index of first matching,但问题不完全相同

1 个答案:

答案 0 :(得分:5)

boost::hana::is_a返回对象的标签是否与给定标签匹配。 [reference]

您没有向其传递标签,而是向其传递了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>));

[Reference to hana::equal]

Live example