Можно ли выразить «тип» лямбда-выражения?

Если рассматривать лямбда-выражения как «синтаксический сахар» для вызываемых объектов, может ли быть выражен безымянный базовый тип?

Пример:

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;
52
задан Johannes Schaub - litb 1 October 2011 в 03:00
поделиться