我想知道为什么在这段代码中,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获得第一次匹配指数,但问题不完全一样
发布于 2018-09-18 16:50:02
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>));https://stackoverflow.com/questions/52389253
复制相似问题