增强融合将较小的序列复制成较大的序列

时间:2014-10-31 21:00:24

标签: c++ boost boost-fusion

到目前为止,我正在将src融合序列复制到dst融合序列中。

struct Dst { ... } dst;
boost::fusion::copy( src, dst );

然而,dst,一个适合作为融合序列的结构,有一个新成员,放在最后。

src的大小虽然没有改变。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您只需保留相同的代码。

第一个字段将被复制,并且尾随的新字段保持不变:

查看 Live On Coliru

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