Kann der 'Typ' eines Lambda-Ausdrucks ausgedrückt werden?
Denken Sie Lambda-Ausdrücke als 'syntaktischen Zucker' für aufrufbare Objekte. Kann der unbenannte zugrunde liegende Typ ausgedrückt werden?
Ein Beispiel
struct gt {
bool operator() (int l, int r) {
return l > r;
}
} ;
Jetzt,[](int l, int r) { return l > r; }
ist ein eleganter Ersatz für den obigen Code (plus der notwendigen Erstellung aufrufbarer Objekte von gt), aber gibt es eine Möglichkeit, gt (den Typ) selbst auszudrücken?
Eine einfache Verwendung:
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;