public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/107889] New: Incorrect parsing of qualified friend function returning decltype(auto) @ 2022-11-27 19:47 gcc at nospam dot scs.stanford.edu 2022-11-28 6:52 ` [Bug c++/107889] " marxin at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: gcc at nospam dot scs.stanford.edu @ 2022-11-27 19:47 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107889 Bug ID: 107889 Summary: Incorrect parsing of qualified friend function returning decltype(auto) Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc at nospam dot scs.stanford.edu Target Milestone: --- G++ 12.2.0 rejects a valid friend declaration for a fully-qualified function returning `decltype(auto)`. To reproduce the problem, you can try to compile the following code with `g++ -std=c++20 -c bug.cc`: decltype(auto) f() { } struct S { friend decltype(auto) ::f(); }; This results in the following error: $ c++ -std=c++20 -c bug.cc bug.cc:7:27: error: 'decltype(auto)' is not a class type 7 | friend decltype(auto) ::f(); | ^ bug.cc:7:27: error: 'decltype(auto)' is not a class type bug.cc:7:27: error: 'decltype(auto)' is not a class type bug.cc:7:29: error: 'decltype(auto)' is not a class type 7 | friend decltype(auto) ::f(); | ^ bug.cc:7:10: error: ISO C++ forbids declaration of 'f' with no type [-fpermissive] 7 | friend decltype(auto) ::f(); | ^~~~~~~~~~~~~~ bug.cc:7:29: error: invalid use of 'decltype(auto)' 7 | friend decltype(auto) ::f(); A similar problem was reported in bug #59766 for friend functions returning auto. It seems to have been mostly fixed, but the combination of decltype(auto) and the function name being qualified (::f) is still a problem. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/107889] Incorrect parsing of qualified friend function returning decltype(auto) 2022-11-27 19:47 [Bug c++/107889] New: Incorrect parsing of qualified friend function returning decltype(auto) gcc at nospam dot scs.stanford.edu @ 2022-11-28 6:52 ` marxin at gcc dot gnu.org 2022-11-28 9:24 ` redi at gcc dot gnu.org 2022-11-28 9:28 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: marxin at gcc dot gnu.org @ 2022-11-28 6:52 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107889 Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2022-11-28 CC| |marxin at gcc dot gnu.org --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Clang accepts the code. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/107889] Incorrect parsing of qualified friend function returning decltype(auto) 2022-11-27 19:47 [Bug c++/107889] New: Incorrect parsing of qualified friend function returning decltype(auto) gcc at nospam dot scs.stanford.edu 2022-11-28 6:52 ` [Bug c++/107889] " marxin at gcc dot gnu.org @ 2022-11-28 9:24 ` redi at gcc dot gnu.org 2022-11-28 9:28 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2022-11-28 9:24 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107889 --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think this is https://wg21.link/cwg1828 which was resolved by https://wg21.link/p1787 which GCC does not implement yet. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/107889] Incorrect parsing of qualified friend function returning decltype(auto) 2022-11-27 19:47 [Bug c++/107889] New: Incorrect parsing of qualified friend function returning decltype(auto) gcc at nospam dot scs.stanford.edu 2022-11-28 6:52 ` [Bug c++/107889] " marxin at gcc dot gnu.org 2022-11-28 9:24 ` redi at gcc dot gnu.org @ 2022-11-28 9:28 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2022-11-28 9:28 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107889 --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to David Mazières from comment #0) > A similar problem was reported in bug #59766 for friend functions returning > auto. That's unrelated. The problem here is that decltype(auto)::f is a nested-name-specifier for a member 'f' so is parsed as part of the return type, not the function name. This is what C++20 (and all earlier standards) said. The ambiguity has been resolved as a DR against earlier standards, but GCC doesn't implement that change yet, as shown at https://gcc.gnu.org/projects/cxx-status.html#cxx23 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-11-28 9:28 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-11-27 19:47 [Bug c++/107889] New: Incorrect parsing of qualified friend function returning decltype(auto) gcc at nospam dot scs.stanford.edu 2022-11-28 6:52 ` [Bug c++/107889] " marxin at gcc dot gnu.org 2022-11-28 9:24 ` redi at gcc dot gnu.org 2022-11-28 9:28 ` redi at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).