[Bug c++/57846] CRTP, templates, metaprogramming, forwarding and static member
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57846 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |8.3
[Bug c++/57846] CRTP, templates, metaprogramming, forwarding and static member
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57846 Andrew Pinski changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=83160 --- Comment #4 from Andrew Pinski --- Fixed in GCC 8, most likely by the patch which fixed PR 83160.
[Bug c++/57846] CRTP, templates, metaprogramming, forwarding and static member
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57846 Harald van Dijk changed: What|Removed |Added CC||harald at gigawatt dot nl --- Comment #3 from Harald van Dijk --- Somewhat reduced: template struct A { template void f(); }; template struct B { int &f() const; template ().template f(T2()))> void f(); void g() { int *i = &B().f(); } }; Accepted by clang 3.4.2, rejected by gcc 4.8.3 and 4.9.0 with: test.cc: In member function ‘void B::g()’: test.cc:17:26: error: lvalue required as unary ‘&’ operand It seems to only happen when certain operators are used: there is no error when doing e.g. int &i = B().f();
[Bug c++/57846] CRTP, templates, metaprogramming, forwarding and static member
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57846 Ville Voutilainen changed: What|Removed |Added Keywords||rejects-valid Status|UNCONFIRMED |NEW Last reconfirmed||2014-12-12 CC||ville.voutilainen at gmail dot com Ever confirmed|0 |1 Known to fail||4.8.2, 4.9.1, 5.0 --- Comment #2 from Ville Voutilainen --- We badly need a reduced testcase for this.
[Bug c++/57846] CRTP, templates, metaprogramming, forwarding and static member
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57846 --- Comment #1 from Vincent --- Apparently, this is also a bug in the last version (4.9): http://stackoverflow.com/questions/17515079/crtp-templates-metaprogramming-forwarding-and-static-member-a-bug-in-g-4-8