Lambda 导致编译错误

Lambda causes compilation error

我正在尝试使用标准库的 std::generate 函数用对象填充矢量容器:

  vector<className> table(20);
  generate(table.begin(), table.end(), [&] { return className(); } );  

我收到以下错误:

Expected primary expression before '[' token.
Expected primary expression before ']' token.

我知道添加 [&] 是为了获取返回对象的引用,但我不知道括号从何而来(我在几个关于如何使用 generate).

对错误来源的一些解释和演示将不胜感激。

编辑: Lambda 表达式需要 C++11,我没有使用它。 [&]后不需要()

  1. 您似乎没有在启用 C++11 支持的情况下进行编译,即如果您使用的是 clanggcc[=,则缺少 -std=c++11 16=]

  2. 括号定义了如何捕获 lambda 之外的变量。 IE。 [&] 使其通过引用捕获变量,[=] 复制您访问的每个变量。

作为 lambda 及其捕获列表的参考,您可以使用 Lambda functions