Когда мы можем опустить возвращаемый тип в лямбда-выражении C ++ 11?

Насколько язнатьв стандарте C ++ 11 (не C ++ 14), опуская тип возврата лямбды, его тип возврата выводится следующим образом:

Тип возвращаемого выражения, когда лямбда состоит только из одного оператора return с выражением, илиvoid во всех остальных случаях.

Рассмотрим теперь этот код:

#include <iostream>

auto closure = [](int x)
{
    x++;
    return x;
};

int main()
{
    int y = closure(10);
    std::cout << y << std::endl;
}

Это должно относиться к случаю 2., однако код компилируется, как если бы C ++ 14 сauto вывод типов в g ++ 4.9.2, g ++ 5 и clang ++, с-pedantic -Wall -Wextra -std=c++11, Что тут происходит? Я неправильно интерпретирую стандарт?

Ответы на вопрос(1)

Ваш ответ на вопрос