【发布时间】:2016-09-26 02:02:32
【问题描述】:
一个空的lambda 捕获列表[] 创建一个没有闭包对象的普通函数。为什么,那么,给出这个例子:
int main(int argc, const char *argv[]) {
auto _foo = [] (int argc) {
return argc - 1;
};
return _foo(argc);
}
gcc(4.8.5 和 5.4.0)是否警告 lambda 的 argc 会影响外部作用域的 argc 变量?
In lambda function:
warning: declaration of ‘int argc’ shadows a parameter [-Wshadow]
auto _foo = [] (int argc) {
^
note: shadowed declaration is here
int main(int argc, const char *argv[]) {
^
毕竟,没有可以被遮蔽的外部/周围闭包状态。
【问题讨论】:
标签: c++11 lambda gcc-warning