Информация об изменениях

Сообщение parameter pack capturing with forwarding от 27.07.2023 7:40

Изменено 27.07.2023 8:26 rg45

parameter pack capturing with forwarding
Привет всем!

Помогите, добрые люди, отстал от поезда.

В C++ есть очень полезная возможность форвардинга отдельных параметров при захвате в лямбду:

template <typename T>
auto make_foo(T&& t) {
    return [t = std::forward<T>(t)](/*...*/) { /*...*/ };
}


Нужно то же самое, только для вариадик параметр паков:

template <typename...T>
auto make_foo(T&&...t) {
    return [/* вот здесь нужен захват по значению с форвардингом */](/*...*/) { /*...*/ };
}


Искал, но не нашел. Выкручиваюсь через туплы — сначала запаковка, потом распаковка — жутко надоедливое занятие. Трудно поверить, что эту возможность выпустили из виду. Может, все-таки, есть такая возможность, просто я не знаю?

P.S. Захват по ссылке не предлагать.
parameter pack capturing with forwarding
Привет всем!

Помогите, добрые люди, отстал от поезда.

В C++ есть очень полезная возможность форвардинга отдельных параметров при захвате в лямбду:

template <typename T>
auto make_foo(T&& t) {
    return [t = std::forward<T>(t)](/*...*/) { /*...*/ };
}


Нужно то же самое, только для вариадик параметр паков:

template <typename...T>
auto make_foo(T&&...t) {
    return [/* вот здесь нужен захват по значению с форвардингом */](/*...*/) { /*...*/ };
}


Искал, но не нашел. Выкручиваюсь через туплы — сначала запаковка, потом распаковка — жутко надоедливое занятие. Трудно поверить, что эту возможность выпустили из виду. Может, все-таки, что-то предусмотрено на этот случай, просто я не знаю?

P.S. Захват по ссылке не предлагать.