O 'tipo' de uma expressão lambda pode ser expresso?
Pensando em expressões lambda como 'açúcar sintático' para objetos que podem ser chamados, o tipo subjacente sem nome pode ser expresso?
Um exemplo:
struct gt {
bool operator() (int l, int r) {
return l > r;
}
} ;
Agora,[](int l, int r) { return l > r; }
existe um substituto elegante para o código acima (mais a criação necessária de objetos que podem ser chamados de gt), mas existe uma maneira de expressar o próprio gt (o tipo)?
Um uso simples:
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;