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>>
optional<hana::size_t<1>>
我知道有 Boost hana get index of first matching 但这不是一个完全相同的问题
boost::hana::is_a 标签 对象的类型与给定的标记匹配。 [reference]
boost::hana::is_a
hana::type 相反。
hana::type
例如,您可以测试参数是否为 hana::类型 ,和 i size_c<0> (因为元组中的第一项已经是 hana::类型 ):
hana::类型
size_c<0>
auto i = hana::index_if(t, hana::is_a<hana::type_tag>);
如果要检查某个类型是否相等,请使用 equal::to
equal::to
auto i = hana::index_if(t, hana::equal.to(hana::type_c<double>));
[Reference to hana::equal]
Live example