Size: a a a

2021 July 09

K

Kelbon in pro.cxx
и такой вопрос, если я передаю лямбду как шаблонный параметр(тип лямбды), то есть какой то вариант узнать какие аргументы нужны её оператору ()  ?
источник

VS

Vlad Serebrennikov in pro.cxx
источник

O

Ofee in pro.cxx
источник

O

Ofee in pro.cxx
Прежде чем предлагать решение частных случаев, у меня вопрос. Какие аргументы нужны для [](auto){}?
источник

K

Kelbon in pro.cxx
ну это не лямбда, это шаблон лямбды
источник

K

Kelbon in pro.cxx
не конкретный класс
источник

K

Kelbon in pro.cxx
я думаю от этого нельзя взять decltype, надо проверить
источник

O

Ofee in pro.cxx
Предлагаю лучше изучить C++, потому что в моём примере конкретный класс
источник

K

Kelbon in pro.cxx
ну или это конкретный класс с шаблонным оператором ()
источник

VS

Vlad Serebrennikov in pro.cxx
кроме этих двух в библиотечных разделах текущего черновика ничего нет
источник

АК

Александр Караев... in pro.cxx
Как и с функциями: взять &decltype(lambda)::operator() и дальше мета-магия.
источник

K

Kelbon in pro.cxx
я думал об этом, что можно пробовать подставлять аргументы и узнать их количество, это сравнительно легко, дальше можно подставлять кастомный аргумент приводящийся к чему угодно, но узнать из этого тип обратно не получится
источник

АК

Александр Караев... in pro.cxx
источник

O

Ofee in pro.cxx
И, тем не менее, вопрос был поставлен как "какие параметры нужны для operator()?". Какие в моём примере?
источник

K

Kelbon in pro.cxx
любые, потому что это шаблон.  А шаблон это не конкретная вещь()
источник

O

Ofee in pro.cxx
Именно, лямбда с нешаблонным operator() – очень частный случай. Более того, лямбда вообще – частный случай класса с перегруженным оператором. Вам действительно хочется закладываться на такой редкий случай?
источник

K

Kelbon in pro.cxx
можно сделать в общем случае для функции и потом узнавать для конкретного оператора()
источник

AD

Andrey Davydov in pro.cxx
этим занимается CTAD for std::function, можно переиспользовать эту работу: https://gcc.godbolt.org/z/o7dGTzY9a
источник

K

Kelbon in pro.cxx
прикольно, спс
источник

ES

Egor Suvorov in pro.cxx
Незачем подставлять, можно просто взять тип decltype(&TLambda::operator()), это будет указатель на функцию-член некоторого класса. Дальше можно при помощи специализации шаблонов это дело разобрать на нужные компоненты.
источник