[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 --- Comment #5 from CVS Commits --- The master branch has been updated by Jason Merrill : https://gcc.gnu.org/g:82198676c80764ca7cf05f891afaee83b9179dd1 commit r11-8118-g82198676c80764ca7cf05f891afaee83b9179dd1 Author: Jason Merrill Date: Sat Apr 10 10:55:58 2021 -0400 c++: ICE with invalid use of 'this' with static memfn [PR98800] Here instantiation of the fake 'this' parameter we used when parsing the trailing return type of func() was failing because there is no actual 'this' parameter in the instantiation. For PR97399 I told Patrick to do the 'this' injection even for statics, but now I think I was wrong; the out-of-class definition case I was concerned about does not break with this patch. And we don't set current_class_ptr in the body of a static member function. And the OMP code should continue to parse 'this' and complain about it rather than give a syntax error. gcc/cp/ChangeLog: PR c++/98800 PR c++/97399 * parser.c (cp_parser_direct_declarator): Don't inject_this_parameter if static_p. (cp_parser_omp_var_list_no_open): Parse 'this' even if current_class_ptr isn't set for a better diagnostic. gcc/testsuite/ChangeLog: PR c++/98800 * g++.dg/gomp/this-1.C: Adjust diagnostic. * g++.dg/cpp0x/constexpr-this1.C: New test.
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 Marek Polacek changed: What|Removed |Added Priority|P2 |P4 Keywords||error-recovery --- Comment #4 from Marek Polacek --- I can see that error message now. So, error-recovery and I suspect P4.
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 --- Comment #3 from Jason Merrill --- I'm getting a correct (if obscure) error message before the ICE: wa.C:4:71: error: use of ‘this’ in a constant expression 4 | template static auto func() -> enable_if_t()>; | ^ wa.C:4: confused by earlier errors, bailing out are you still not?
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 Marek Polacek changed: What|Removed |Added Last reconfirmed||2021-01-25 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 CC||mpolacek at gcc dot gnu.org --- Comment #2 from Marek Polacek --- Confirmed.
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 Patrick Palka changed: What|Removed |Added Target Milestone|--- |8.5
[Bug c++/98800] [8/9/10/11 Regression] ICE on invalid use of non-static member function in trailing return type since r8-2724
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98800 Patrick Palka changed: What|Removed |Added Summary|ICE on invalid use of |[8/9/10/11 Regression] ICE |non-static member function |on invalid use of |in trailing return type |non-static member function |since r251438 |in trailing return type ||since r8-2724 Keywords||ice-on-invalid-code CC||jason at gcc dot gnu.org Known to fail||10.2.0, 11.0, 8.4.0, 9.3.0 Known to work||7.5.0 --- Comment #1 from Patrick Palka --- GCC 7.5 rejects with: : In function 'int main()': :7:29: error: no matching function for call to 'tmp::func()' int main() { tmp::func(); } ^ :4:34: note: candidate: template static enable_if_t()> tmp::func() template static auto func() -> enable_if_t()>; ^~~~ :4:34: note: template argument deduction/substitution failed: : In substitution of 'template static enable_if_t()> tmp::func() [with E = int]': :7:29: required from here :4:70: error: cannot call member function 'constexpr bool tmp::is_integral() [with = int]' without object template static auto func() -> enable_if_t()>; ~~^~