Когда мы можем опустить возвращаемый тип в лямбда-выражении 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
, Что тут происходит? Я неправильно интерпретирую стандарт?