C++ Lambda导致编译错误
我正在尝试使用标准库的C++ Lambda导致编译错误,c++,stl,C++,Stl,我正在尝试使用标准库的std::generate函数用对象填充向量容器: vector<className> table(20); generate(table.begin(), table.end(), [&] { return className(); } ); 我知道添加[&]是为了获取所返回对象的引用,但我不知道括号来自何处(我在几个关于如何使用生成的示例中看到了这一点) 如果您能解释并说明错误的来源,我们将不胜感激 Edit:Lambda表达式需要C+
std::generate
函数用对象填充向量容器:
vector<className> table(20);
generate(table.begin(), table.end(), [&] { return className(); } );
我知道添加[&]
是为了获取所返回对象的引用,但我不知道括号来自何处(我在几个关于如何使用生成
的示例中看到了这一点)
如果您能解释并说明错误的来源,我们将不胜感激
Edit:Lambda表达式需要C++11,我没有使用它。在[&]
之后不需要()
clang
或gcc
[&]
通过引用捕获变量,并且[=]
复制您访问的每个变量作为Lambda及其捕获列表的参考,您可以使用您是使用C++11编译的吗?请提供一个完整的、最小的示例,再现您的问题,以便我们自己编译。如果OP使用Visual Studio,Visual Studio也支持哪种编译器和版本?Lambda函数。如果能知道他使用的是哪种编译器和版本就好了
Expected primary expression before '[' token.
Expected primary expression before ']' token.