#include <iostream>
int main(){
    auto lambda = [] {
        return 7;
    };
    std::cout << lambda() << '\n';
}
Эта программа компилирует и печатает 7. 
Тип возврата лямбда выводится на целочисленный тип на основе возвращаемого значения 7.
Почему это невозможно с обычными функциями?
#include <iostream>
auto function(){
    return 42;
}
int main(){
    std::cout << function() << '\n';
}
ошибка: функция function использует автоматический идентификатор типа без возвращаемого типа возврата