Lambda导致编译错误

时间:2015-01-15 14:58:40

标签: c++ stl

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

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

我收到以下错误:

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

我知道添加[&]是为了获取被返回对象的引用,但我不知道括号的来源(我在几个例子中看到过如何使用{{1 }})。

对错误来自何处的一些解释和证明将不胜感激。

编辑: Lambda表达式需要C ++ 11,我没有使用它。在generate之后无需()

1 个答案:

答案 0 :(得分:4)

  1. 如果您使用的是-std=c++11clang

    LI>
  2. 括号定义如何捕获lambda外部的变量。即gcc使其通过引用捕获变量,并[&]复制您访问的每个变量。

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

相关问题