[Bug c++/61636] generic lambda "cannot call member function without object"
tower120 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Jun 28 13:17:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61636
--- Comment #3 from tower120 <tower120 at gmail dot com> ---
I found that as only I pass *this as parameter and then call functions from it,
it works ok. But it have to be auto:
/// This work
std::cout << if_else(do_first,
*this,
[&](auto self){ return self.fn1(data); },
[&](auto self){ return self.fn2(data); }
) << '\n';
/// This not
std::cout << if_else(do_first,
*this,
[&](Test self){ return self.fn1(data); },
[&](Test self){ return self.fn2(data); }
) << '\n';
http://coliru.stacked-crooked.com/a/272a5e0b8089a5c4
And what even more strange, it work if only one lambda is auto:
std::cout << if_else(do_first,
*this,
[&](auto self){ return self.fn1(data); },
[&](Test self){ return self.fn2(data); } // ???
) << '\n';
http://coliru.stacked-crooked.com/a/ed45a402a6c11d63
More information about the Gcc-bugs
mailing list