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);