в следующем примере, Outer содержит вложенный fusion :: vector:
struct A { fusion::vector<int, double> sub_elements_; };
struct B { fusion::vector<char *, char *> sub_elements_; };
class Outer { fusion::vector<A, A, B> elements_; };
Outer outer_;
Как я могу получить доступ к Outer в виде сглаженного ?Например, я хотел бы, чтобы они были эквивалентны:
fusion::at_c<0>(fusion::at_c<2>(outer_.elements_).sub_elements_);
fusion::at_c<4>(outer_); // Same result; how to make such a flattened access work?
- Одним из подходов может быть использование
fusion::joint_view
;однако это кажется неоптимальным, поскольку представление добавляет избыточный слой ссылок на свои подпоследовательности. - Или я мог бы реализовать свой собственный тип последовательности слияния, например, начиная с примера triple.cpp .Чтобы получить это право достаточно сложно.
Доступ к вложенному вектору является довольно общей задачей - обеспечивает ли boost :: fusion хорошее решение для этого?