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之外的变量。也就是说,
    [&]
    通过引用捕获变量,并且
    [=]
    复制您访问的每个变量


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

    您是使用C++11编译的吗?请提供一个完整的、最小的示例,再现您的问题,以便我们自己编译。如果OP使用Visual Studio,Visual Studio也支持哪种编译器和版本?Lambda函数。如果能知道他使用的是哪种编译器和版本就好了
    Expected primary expression before '[' token.
    Expected primary expression before ']' token.