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).