public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/114569] New: GCC accepts forming pointer to function type which is ref qualified @ 2024-04-03 7:02 jlame646 at gmail dot com 2024-04-03 14:25 ` [Bug c++/114569] " mpolacek at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: jlame646 at gmail dot com @ 2024-04-03 7:02 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114569 Bug ID: 114569 Summary: GCC accepts forming pointer to function type which is ref qualified Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jlame646 at gmail dot com Target Milestone: --- In the following program `#2` is accepts by all compilers but `#1` is rejected. Shouldn't `#2` also be rejected for the same reason. https://godbolt.org/z/sMraETcbx ``` #include <type_traits> template <class Signature> struct Decompose; template <class T> struct Decompose<void(T)> { using Type = T; }; template <class T> using FTDecay = typename Decompose<void(T)>::Type; // static_assert(std::is_same_v<FTDecay<int()&>, int (*)() &>); //#1: all rejects this as expected FTDecay<int()&> x{}; //#2: all accepts this why? ``` ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/114569] GCC accepts forming pointer to function type which is ref qualified 2024-04-03 7:02 [Bug c++/114569] New: GCC accepts forming pointer to function type which is ref qualified jlame646 at gmail dot com @ 2024-04-03 14:25 ` mpolacek at gcc dot gnu.org 2024-04-03 15:16 ` jlame646 at gmail dot com 2024-04-04 6:58 ` jens.maurer at gmx dot net 2 siblings, 0 replies; 4+ messages in thread From: mpolacek at gcc dot gnu.org @ 2024-04-03 14:25 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114569 Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mpolacek at gcc dot gnu.org --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- [dcl.fct]/10: A function type with a cv-qualifier-seq or a ref-qualifier shall appear only as: -- [...] -- the type-id of a template-argument for a type-parameter So the code should compile. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/114569] GCC accepts forming pointer to function type which is ref qualified 2024-04-03 7:02 [Bug c++/114569] New: GCC accepts forming pointer to function type which is ref qualified jlame646 at gmail dot com 2024-04-03 14:25 ` [Bug c++/114569] " mpolacek at gcc dot gnu.org @ 2024-04-03 15:16 ` jlame646 at gmail dot com 2024-04-04 6:58 ` jens.maurer at gmx dot net 2 siblings, 0 replies; 4+ messages in thread From: jlame646 at gmail dot com @ 2024-04-03 15:16 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114569 --- Comment #2 from Jason Liam <jlame646 at gmail dot com> --- (In reply to Marek Polacek from comment #1) > So the code should compile. But https://timsong-cpp.github.io/cppwp/n4950/dcl.ptr#4.sentence-2 says: > [Note 1: [...] Forming a function pointer type is ill-formed if the function type has cv-qualifiers or a ref-qualifier; see [dcl.fct]. [...]] And since `FTDecay<int()&>` is `int (*)() &`, this should be ill-formed? ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/114569] GCC accepts forming pointer to function type which is ref qualified 2024-04-03 7:02 [Bug c++/114569] New: GCC accepts forming pointer to function type which is ref qualified jlame646 at gmail dot com 2024-04-03 14:25 ` [Bug c++/114569] " mpolacek at gcc dot gnu.org 2024-04-03 15:16 ` jlame646 at gmail dot com @ 2024-04-04 6:58 ` jens.maurer at gmx dot net 2 siblings, 0 replies; 4+ messages in thread From: jens.maurer at gmx dot net @ 2024-04-04 6:58 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114569 Jens Maurer <jens.maurer at gmx dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jens.maurer at gmx dot net --- Comment #3 from Jens Maurer <jens.maurer at gmx dot net> --- Note that the ref-qualified function type is not directly an argument for a template type parameter (which would be allowed), but it's a function parameter type inside a function declarator. And those do decay to (possibly ill-formed) pointers. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-04-04 6:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-04-03 7:02 [Bug c++/114569] New: GCC accepts forming pointer to function type which is ref qualified jlame646 at gmail dot com 2024-04-03 14:25 ` [Bug c++/114569] " mpolacek at gcc dot gnu.org 2024-04-03 15:16 ` jlame646 at gmail dot com 2024-04-04 6:58 ` jens.maurer at gmx dot net
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).