Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将齐次fusion::vector转换为(std/boost)::数组_C++_Boost_Boost Fusion - Fatal编程技术网

C++ 如何将齐次fusion::vector转换为(std/boost)::数组

C++ 如何将齐次fusion::vector转换为(std/boost)::数组,c++,boost,boost-fusion,C++,Boost,Boost Fusion,我相对来说是个新手,所以我相信这是一个容易的问题: 给定一个fusion::vector,我需要一个好方法将其转换为数组您可以使用数组(std或boost)和复制的内置自适应: #include <boost/fusion/include/copy.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/adapted/boost_array.hpp> #include &

我相对来说是个新手,所以我相信这是一个容易的问题:

给定一个
fusion::vector
,我需要一个好方法将其转换为
数组
您可以使用
数组
(std或boost)和
复制的内置自适应:

#include <boost/fusion/include/copy.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/adapted/boost_array.hpp>
#include <boost/array.hpp>

using namespace boost;

int main() {
    fusion::vector<int, int, int> fv(1,2,3);
    array<int, 3> arr;

    fusion::copy(fv, arr);
}
#包括
#包括
#包括
#包括
使用名称空间boost;
int main(){
融合::载体fv(1,2,3);
阵列arr;
融合:复制(fv,arr);
}

基于@sehe的答案,您还可以使用
fusion::invoke
删除未初始化的数组

#包括
#包括
#包括
#包括
使用名称空间boost;
#包括
int main(){
融合::载体fv(1,2,3);
auto-arr=fusion::invoke([](intx,inty,intz){返回数组{x,y,z};},fv);
用于(自动i:arr)
标准::cout
    auto arr = fusion::invoke([](auto... xs){return array<int, 3>{xs...};}, fv);
    auto arr = fusion::invoke([](auto... xs){return std::array{xs...};}, fv);