Представьте себе следующий игрушечный пример шаблонной лямбды:
auto f = []<typename T>(){};
Самый короткий известный мне способ вызвать эту лямбду для типа int
- это f.operator()<int>();
.
Кто-нибудь знает, есть ли более простой / короткий синтаксис для вызова шаблонной лямбды?
Разумеется, f<int>();
не компилируется, но было бы неплохо иметь такой синтаксис, похожий на вызов функции шаблона.
Но, возможно, в стандарте C ++ они изобрели для лямбды какой-то специальный псевдоним ярлыка, о котором я не знаю, например f._<int>();
, здесь воображаемый _
- это имя метода, который просто перенаправляет все аргументы методу .operator()
. Есть что-нибудь подобное? А может f.call<int>()
?
Я понимаю, что лямбда ведет себя как простой класс функтора с методом .operator()
, следовательно, такой же длинный синтаксис вызова, что и для шаблонного функтора f.operator()<int>()
. Но в своем пользовательском функторе вы можете изобрести метод псевдонима _
, который пересылает аргументы, есть ли такой похожий псевдоним в лямбде?
Как сказал @RedFog, можно реализовать вспомогательную функцию, которую вы используете, например call<int>(f);
, но я не знаю, как реализовать такую функцию для очень общего случая - представьте, если лямбда имеет сочетание параметров typename
и auto
, например []<typename A, auto B, typename Q>{};
, я не Не знаю, как написать очень общую вспомогательную функцию для такого смешанного случая.
call<int>(f)
илиcall<int>(f)()
? - person RedFog   schedule 24.04.2021_()
метод для выполнения таких сокращений. Нужны специалисты, которые точно скажут нам, существует ли такой дополнительный метод или нет. - person Arty   schedule 24.04.2021auto
иtypename
, например[]<typename T, auto X, typename Q>{};
, тогда я не знаю, как реализовать вспомогательную функциюcall()
для поддержки любого списка параметров шаблона. - person Arty   schedule 24.04.2021typename...
. но , если стандартная лямбда может иметь какой-нибудь готовый_()
метод для выполнения таких сокращений, я боюсь, что нет. - person RedFog   schedule 24.04.2021