В документации для Boost Fusion есть раздел под Алгоритмы , называемый Преобразование .Перечисленные здесь функции , в частности, включают функцию с именем pop_front
.Похоже, что это именно то, что мы хотим:
Возвращает новую последовательность с удалением первого элемента оригинала.
...
Пример
assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
Для вашего примера:
boost::fusion::vector<char, int, float> a('a', 12, 5.5f);
boost::fusion::vector<int, float> b(12, 5.5f);
boost::fusion::copy( boost::fusion::pop_front(a), b );
Имя pop_front
немного странно, учитывая, что оно фактически не изменяет последовательность ввода, но возвращает измененный результат.Однако pop_front
происходит из стандартной библиотеки C ++, где она используется для удаления первого элемента коллекции, например, с std::list::pop_front
.Boost Fusion выбрал это имя как «более согласованное» со стандартной библиотекой.