En considérant les expressions lambda comme un «sucre syntaxique» pour les objets appelables, le type sous-jacent non nommé peut-il être exprimé?
Un exemple:
struct gt {
bool operator() (int l, int r) {
return l > r;
}
} ;
Maintenant, [](int l, int r) { return l > r; }
remplace élégamment le code ci-dessus (plus la création nécessaire d'objets appelables de gt), mais existe-t-il un moyen d'exprimer gt (le type) lui-même?
Un usage simple:
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;