I'm dealing with some C code that takes some data, and forwards it to the function passed in:
void foo(int* data, void (*fun)(int*)){
(*fun)(data);
};
The following works without warning:
void bar(int* data){};
int main(){
int data=0;
foo(&data,bar);
}
However, if I use a lambda instead:
int main(){
int data=0;
foo(&data,[](auto data){});
}
I get the following warning:
warning: declaration of ‘data’ shadows a previous local [-Wshadow]
foo(&data,[](auto data){});
^
o.cpp:14:7: note: shadowed declaration is here
int data=0;
But I thought an empty capture group would exclude the first instantiation during its look up.
Is this warning legitimate?
Why isn't the empty capture enough to avoid warnings?