Я читаю здесь на cppreference о том, как выводится тип возвращаемого значения лямбда С++ 11:
если тело состоит из одного оператора
return
, возвращаемый тип - это тип возвращаемого выражения (после значения rvalue-to-lvalue, array-to-pointer или неявного преобразования функции-к-указателю)
Итак, я думаю, это означает, что лямбда может иметь только один оператор возврата. Но почему он работает с несколькими возвращающими операторами?
Этот компилирует для обоих компиляторов:
auto f = [] (bool c1, bool c2) {
if (c1) return 1;
if (c2) return 2;
else return 3;
};