У меня есть последовательность элементов 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) {}
};
Моя единственная идея реализовать это с помощью векторов Fusion - это что-то вроде
BVector b( transform( AVector(), magic_functor() ) );
В этой идее magic_functor
будет иметь тип результата Bi
для Ai
и выполнить построение в его operator()
.Тем не менее, magic_functor
должен знать правильный тип для приведения к нему, что приведет к дублированию логики.
Есть ли лучший способ слияния с инициализацией?