[Bug c++/77792] New: Generic lamdba scope issue when working with list::remove_if
michele.caini at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Sep 29 09:34:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77792
Bug ID: 77792
Summary: Generic lamdba scope issue when working with
list::remove_if
Product: gcc
Version: 6.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: michele.caini at gmail dot com
Target Milestone: ---
Consider the following code:
#include<algorithm>
#include<list>
template<typename U>
struct S {
using FT = void(*)();
struct T { FT func; };
template<typename>
static void f() { }
std::list<T> l{ { &f<int> }, { &f<char> } };
void run() {
l.remove_if([](const T &t) { return t.func == &f<int>; }); // (1)
l.remove_if([](const auto &t) { return t.func == &f<int>; }); //
(2)
}
};
int main() {
S<void> s;
s.run();
}
(1) compiles fine, (2) doesn't compile with the error:
> error: 'f' was not declared in this scope
Note also that it compiles if modified as it follows:
l.remove_if([](const auto &t) { return t.func == &S<U>::f<int>; }); // (2)
More information about the Gcc-bugs
mailing list