提升 mpl::vector 和 hana
Boost mpl::vector and hana
我正在搜索某种元 vector/linked 列表。似乎 mpl::vector 是最好的方法。但是现在有了hana。不幸的是我找不到某种 hana::vector。我看到了 mpl::vector 的适配器,仅此而已。那么这意味着 mpl::vector 仍然是最好的做事方式?
Hana 的编译速度非常快,所以我想:好吧,为什么不呢?但是 mpl 并没有那么快,我真的需要自己编码 mpl::vector 吗?
boost::hana::tuple
应该是 mpl::vector
的一个足够好的替代品,如果你需要的是 types/values.
的异构 "list"
您可以使用 boost::hana::at
访问特定索引中的项目,使用 boost::hana::append
追加项目,使用 boost::hana::remove
删除项目等等。
即使与 mpl::vector
的接口没有一对一的对应关系,考虑到上述原语,实现一些实用函数应该是微不足道的。
如果你需要一个类型列表,你应该使用boost::hana::tuple_t
,它是hana::tuple(hana::type_c<Types>...)
的语法糖。
我正在搜索某种元 vector/linked 列表。似乎 mpl::vector 是最好的方法。但是现在有了hana。不幸的是我找不到某种 hana::vector。我看到了 mpl::vector 的适配器,仅此而已。那么这意味着 mpl::vector 仍然是最好的做事方式?
Hana 的编译速度非常快,所以我想:好吧,为什么不呢?但是 mpl 并没有那么快,我真的需要自己编码 mpl::vector 吗?
boost::hana::tuple
应该是 mpl::vector
的一个足够好的替代品,如果你需要的是 types/values.
您可以使用 boost::hana::at
访问特定索引中的项目,使用 boost::hana::append
追加项目,使用 boost::hana::remove
删除项目等等。
即使与 mpl::vector
的接口没有一对一的对应关系,考虑到上述原语,实现一些实用函数应该是微不足道的。
如果你需要一个类型列表,你应该使用boost::hana::tuple_t
,它是hana::tuple(hana::type_c<Types>...)
的语法糖。