我有一个 Boost.Fusion 元素序列,每个元素都需要用另一个序列的元素进行初始化。当我不使用 Fusion 时,它看起来像:
class A {
A1 a;
A2 b;
A3 c;
};
class B {
B1 a;
B2 b;
B3 c;
B( const A& o ) : a(o.a), b(o.b), c(o.c) {}
};
我用融合向量实现这一点的唯一想法是
BVector b( transform( AVector(), magic_functor() ) );
在这个想法中,magic_functor
将有一个结果类型Bi
for anAi
并在其中执行构造operator()
。但是,magic_functor
必须知道要转换为的正确类型,这将导致重复的逻辑。
有没有更好的方法来融合初始化?