以下 lambda 表达式代码无法在 VC++ 2010 中编译。
void error_check() {}
int main()
{
vector<int> v(10);
std::generate(v.begin(), v.end(), [](){ //either add -> int,
error_check(); //or comment this out to compile
return rand()%99; });
}
编译器说“已指定为具有 void 返回类型的 lambda 不能返回值。” 但是,如果我明确指定返回类型或注释掉error_check();
代码编译得很好。
我读到单个返回语句可以省略返回类型部分。那为什么上面需要它呢?