我正在尝试使用标准库的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
之后无需()
。
答案 0 :(得分:4)
如果您使用的是-std=c++11
或clang
括号定义如何捕获lambda外部的变量。即gcc
使其通过引用捕获变量,并[&]
复制您访问的每个变量。
作为lambdas及其捕获列表的参考,您可以使用Lambda functions