到目前为止,我正在将src融合序列复制到dst融合序列中。
struct Dst { ... } dst;
boost::fusion::copy( src, dst );
然而,dst,一个适合作为融合序列的结构,有一个新成员,放在最后。
src的大小虽然没有改变。
我该如何解决?
答案 0 :(得分:0)
您只需保留相同的代码。
第一个字段将被复制,并且尾随的新字段保持不变:
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/struct.hpp>
#include <boost/fusion/algorithm/auxiliary/copy.hpp>
#include <boost/fusion/include/io.hpp>
#include <iostream>
namespace fus = boost::fusion;
struct X {
int i;
double d;
std::string s;
std::string extra;
};
BOOST_FUSION_ADAPT_STRUCT(X, (int,i)(double,d)(std::string,s)(std::string,extra))
int main()
{
fus::vector<int, double, std::string> src(42, 3.14, "hello");
X dst { -1, -1, "filler", "filler" };
fus::copy(src, dst);
std::cout << fus::as_vector(dst);
}
打印
(42 3.14 hello filler)