Автоматически распаковывать кортеж при вызове функции в C++

Я использую range-v3, и иногда я использовал ranges::views::enumerate, чтобы получить идентификатор значения, которое я повторяю. enumerate view возвращает кортеж, содержащий идентификатор и значение, поэтому я хотел бы знать, можно ли распаковать этот кортеж напрямую. Это будет пример:

samplers | 
    ranges::views::enumerate | 
    ranges::views::transform([](const auto samplerId, const auto &jSampler){...} |
    ranges::to_vector;

person jjcasmar    schedule 22.01.2021    source источник
comment
Значит, нет способа определить это напрямую в объявлении? Просто подумал, что было бы гораздо лучше увидеть объявление функции и увидеть, что она получает два параметра.   -  person jjcasmar    schedule 23.01.2021
comment
Но он не получает 2 параметра. enumerate возвращает кортеж, похожий на один объект. Даже если вы дадите двум частям параметра разные имена, это будет один параметр. например в C++20, я думаю, вы можете написать ([](auto const [samplerId, jSampler) {...}), но опять же, это все еще один параметр   -  person cigien    schedule 23.01.2021
comment
Я понимаю, что это 1 единственный параметр, но во фрагменте C++20, по крайней мере, он показывает, что он распакован до двух значений, так что чувствует себя лучше. Я думаю, что это достаточно близко к тому, о чем я думал.   -  person jjcasmar    schedule 23.01.2021
comment
Отвечает ли это на ваш вопрос? Распаковка диапазона кортежей в n-арную функцию   -  person Artyer    schedule 23.01.2021
comment
На самом деле, это выглядит очень красиво!   -  person jjcasmar    schedule 23.01.2021