История изменений
Исправление Siborgium, (текущая версия) :
Ну собственно идея простая. Есть параметр паки. Их можно передавать куда-то, применять функции к их элементам. Соответственно, pushMany реализуется элементарно.
С popMany немного сложнее – нет пака, к которому можно было бы применить функцию, но известна длина. По этой длине строим пак индексов с помощью index_sequence. К каждому элементу этого пака применяем функцию, возвращающую popOne, и получаемый пак элементов передаем в конструктор std::tuple
, у которого еще и подходящий deduction guide есть, так что писать параметры руками не нужно.
Если есть С++20, то хелпер не нужен, на месте пишется лямбда – им разрешили иметь шаблонные параметры.
Исправление Siborgium, :
Ну собственно идея простая. Есть параметр паки. Их можно передавать куда-то, применять функции к их элементам. Соответственно, pushMany реализуется элементарно.
С popMany немного сложнее – нет пака, к которому можно было бы применить функцию, но известна длина. По этой длине строим пак индексов с помощью index_sequence. К каждому элементу этого пака применяем функцию, возвращающую popOne, и получаемый пак элементов передаем в конструктор std::tuple
, у которого еще и подходящий deduction guide есть, так что писать параметры руками не нужно.
Исходная версия Siborgium, :
Ну собственно идея простая. Есть параметр паки. Их можно передавать куда-то, применять функции к их элементам. Соответственно, pushMany реализуется элементарно.
С popMany немного сложнее – нет пака, к которому можно было бы применить функцию, но известна длина. По этой длине строим пак индексов с помощью index_sequence. К каждому элементу этого пака применяем функцию, возвращающую popOne, и получаемый пак элементов передаем в std::tuple
, у которого еще и подходящий deduction guide есть, так что писать параметры руками не нужно.