提升 hana index_if 并输入
boost hana index_if and type
我想知道为什么在这段代码中,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::is_a
returns 对象的 标签 是否与给定标签匹配。 [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>));
我想知道为什么在这段代码中,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::is_a
returns 对象的 标签 是否与给定标签匹配。 [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>));