Согласно документам здесь , метод at<N>(s)
boost::fusion::vector
возвращает ссылку на содержащийся элемент.
Также, если вы используете библиотеку наддува версии 1.48, они поддерживают семантику перемещения C ++ 11.Это означает, что у вас может быть функция, которая перебирает размер таблицы для определенного столбца no, скажем, i
, и заполняет вектор столбца, который является std::vector
.Затем вы просто возвращаете этот вектор-столбец, и вызывающая функция получает move
d std::vector
.В любой момент копии не создаются.
Подробнее о семантике перемещения можно прочитать здесь на самой странице стандартов.Вы также можете посмотреть видео Бьярн Страуструп, объясняющее его вкратце здесь .Перейти к минуте 37 и смотреть до минуты 43.