public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors
@ 2024-01-10 2:53 jlame646 at gmail dot com
2024-01-10 2:55 ` [Bug c++/113300] " pinskia at gcc dot gnu.org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: jlame646 at gmail dot com @ 2024-01-10 2:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
Bug ID: 113300
Summary: GCC rejects valid program involving explicit and non
explicit default constructors
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: ---
The following valid program is rejected by gcc and clang but accepted by msvc.
https://godbolt.org/z/Y3x8nP11M
```
struct A
{
explicit A(int = 10);
A()= default;
};
A a = {}; //msvc ok but gcc and clang fails here
```
GCC says:
```
<source>:8:8: error: conversion from '<brace-enclosed initializer list>' to 'A'
is ambiguous
8 | A a = {}; //msvc ok but gcc and clang fails here
| ^
<source>:5:3: note: candidate: 'constexpr A::A()'
5 | A()= default;
| ^
<source>:4:12: note: candidate: 'A::A(int)'
4 | explicit A(int = 10);
```
The reason why this is valid is discussed here:
https://stackoverflow.com/questions/77788861/ambiguous-constructor-error-in-gcc-but-not-in-msvc
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
@ 2024-01-10 2:55 ` pinskia at gcc dot gnu.org
2024-01-10 2:56 ` pinskia at gcc dot gnu.org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-01-10 2:55 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
There is a C++ defect report in this area even ...
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
2024-01-10 2:55 ` [Bug c++/113300] " pinskia at gcc dot gnu.org
@ 2024-01-10 2:56 ` pinskia at gcc dot gnu.org
2024-01-10 2:59 ` [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with " jlame646 at gmail dot com
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-01-10 2:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|GCC rejects valid program |GCC rejects valid program
|involving copy list |involving explicit and non
|initialization A a = {} of |explicit default
|a class with explicit and |constructors
|non explicit default |
|constructors |
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=84849,
| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=60027
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
https://wg21.link/cwg1228
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
2024-01-10 2:55 ` [Bug c++/113300] " pinskia at gcc dot gnu.org
2024-01-10 2:56 ` pinskia at gcc dot gnu.org
@ 2024-01-10 2:59 ` jlame646 at gmail dot com
2024-01-10 3:03 ` jlame646 at gmail dot com
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jlame646 at gmail dot com @ 2024-01-10 2:59 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
Jason Liam <jlame646 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|GCC rejects valid program |GCC rejects valid program
|involving explicit and non |involving copy list
|explicit default |initialization A a = {} of
|constructors |a class with explicit and
| |non explicit default
| |constructors
--- Comment #3 from Jason Liam <jlame646 at gmail dot com> ---
(In reply to Andrew Pinski from comment #1)
> There is a C++ defect report in this area even ...
Can you post a link to the DR that you're referencing? Or are you referring to
this https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0398r0.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
` (2 preceding siblings ...)
2024-01-10 2:59 ` [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with " jlame646 at gmail dot com
@ 2024-01-10 3:03 ` jlame646 at gmail dot com
2024-01-10 18:59 ` mpolacek at gcc dot gnu.org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jlame646 at gmail dot com @ 2024-01-10 3:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
--- Comment #4 from Jason Liam <jlame646 at gmail dot com> ---
(In reply to Andrew Pinski from comment #1)
> There is a C++ defect report in this area even ...
Looks like that gcc and clang are non-compliant here as per this discussion in
CWG issue list: https://github.com/cplusplus/CWG/issues/486
Also, the cwg 1228 is categorised as NAD. https://wg21.link/cwg1228 so
this(that the program should compile) looks intentional.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
` (3 preceding siblings ...)
2024-01-10 3:03 ` jlame646 at gmail dot com
@ 2024-01-10 18:59 ` mpolacek at gcc dot gnu.org
2024-01-30 16:15 ` mpolacek at gcc dot gnu.org
2024-04-23 22:34 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-01-10 18:59 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2024-01-10
CC| |mpolacek at gcc dot gnu.org
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
` (4 preceding siblings ...)
2024-01-10 18:59 ` mpolacek at gcc dot gnu.org
@ 2024-01-30 16:15 ` mpolacek at gcc dot gnu.org
2024-04-23 22:34 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-01-30 16:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Not a regression so I think it has to wait until GCC 15. I'd like to take a
look then.
I've updated https://gcc.gnu.org/projects/cxx-dr-status.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with explicit and non explicit default constructors
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
` (5 preceding siblings ...)
2024-01-30 16:15 ` mpolacek at gcc dot gnu.org
@ 2024-04-23 22:34 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-04-23 22:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113300
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
This is CWG 2856 https://cplusplus.github.io/CWG/issues/2856.html
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-04-23 22:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-10 2:53 [Bug c++/113300] New: GCC rejects valid program involving explicit and non explicit default constructors jlame646 at gmail dot com
2024-01-10 2:55 ` [Bug c++/113300] " pinskia at gcc dot gnu.org
2024-01-10 2:56 ` pinskia at gcc dot gnu.org
2024-01-10 2:59 ` [Bug c++/113300] GCC rejects valid program involving copy list initialization A a = {} of a class with " jlame646 at gmail dot com
2024-01-10 3:03 ` jlame646 at gmail dot com
2024-01-10 18:59 ` mpolacek at gcc dot gnu.org
2024-01-30 16:15 ` mpolacek at gcc dot gnu.org
2024-04-23 22:34 ` mpolacek 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).