Размышляя о лямбда-выражениях как "синтаксическом сахаре" для вызываемых объектов, может ли быть выражен неназванный базовый тип?
Пример:
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;