Можно ли выразить «тип» лямбда-выражения?
Думая о лямбда-выражениях как о «синтаксическом сахаре» для вызываемых объектов, можно ли выразить безымянный базовый тип?
Пример:
struct gt {
bool operator() (int l, int r) {
return l > r;
}
} ;
Сейчас,[](int l, int r) { return l > r; }
элегантная замена приведенному выше коду (плюс необходимое создание вызываемых объектов gt), но есть ли способ выразить сам gt (тип)?
Простое использование:
std::set<int, gt> s1; // A reversed-order std::set
// Is there a way to do the same using a lambda?
std::set<int, some-magic-here-maybe([](int l, int r) { return l > r; }) > s2;