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,我没有使用它。 [&]
后不需要()
。
您似乎没有在启用 C++11 支持的情况下进行编译,即如果您使用的是 clang
或 gcc
[=,则缺少 -std=c++11
16=]
括号定义了如何捕获 lambda 之外的变量。 IE。 [&]
使其通过引用捕获变量,[=]
复制您访问的每个变量。
作为 lambda 及其捕获列表的参考,您可以使用 Lambda functions
我正在尝试使用标准库的 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,我没有使用它。 [&]
后不需要()
。
您似乎没有在启用 C++11 支持的情况下进行编译,即如果您使用的是
clang
或gcc
[=,则缺少-std=c++11
16=]括号定义了如何捕获 lambda 之外的变量。 IE。
[&]
使其通过引用捕获变量,[=]
复制您访问的每个变量。
作为 lambda 及其捕获列表的参考,您可以使用 Lambda functions