当前位置:  开发笔记 > 编程语言 > 正文

C++:使用boost :: hana将数组元素扩展为函数的参数

如何解决《C++:使用boost::hana将数组元素扩展为函数的参数》经验,为你挑选了1个好方法。



1> Louis Dionne..:

你的问题似乎有两个方面.首先,您的问题的标题询问是否可以将数组的元素扩展为函数的参数.确实有可能,因为std::arrayFoldable.它足以使用hana::unpack:

#include 
#include 
#include 
namespace hana = boost::hana;


struct myfunction {
    template 
    void operator()(T ...i) const {
        // whatever
    }
};

int main() {
    std::array xs = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
    hana::unpack(xs, myfunction{});
}

其次,你问是否有可能做类似的事情

std::string s;
std::array xs = {1, 3, 5, ...};
hana::int_c<10>.times([&](int i){ s += std::to_string(xs[i]) + ","; });

答案是使用hana::int_c<10>.times.with_index:

hana::int_c<10>.times.with_index([&](int i) { s += std::to_string(xs[i]) + ","; });    

同样,您也可以使用hana::for_each:

hana::for_each(xs, [&](int x) { s += std::to_string(x) + ","; });

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有