LINUX.ORG.RU

История изменений

Исправление 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 есть, так что писать параметры руками не нужно.