Вложенный вектор слияния - как получить доступ к последовательности последовательностей сглаженным способом? - PullRequest
0 голосов
/ 23 августа 2011

в следующем примере, 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 хорошее решение для этого?

...