[Bug c++/114898] Converting {} to a tag type should be ill-formed SFINAE-friendly

2024-05-02 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114898

--- Comment #4 from Jonathan Wakely  ---
(In reply to Jonathan Wakely from comment #3)
> Dup of Bug 102257, which might be what CWG 2586 says should happen, sadly.

Oops 2856

[Bug c++/114898] Converting {} to a tag type should be ill-formed SFINAE-friendly

2024-05-02 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114898

Jonathan Wakely  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #3 from Jonathan Wakely  ---
Dup of Bug 102257, which might be what CWG 2586 says should happen, sadly.

*** This bug has been marked as a duplicate of bug 102257 ***

[Bug c++/114898] Converting {} to a tag type should be ill-formed SFINAE-friendly

2024-04-30 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114898

Jonathan Wakely  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2024-04-30
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=113300
 Status|UNCONFIRMED |NEW

--- Comment #2 from Jonathan Wakely  ---
Might be related to Bug 113300 and/or Bug 102257

[Bug c++/114898] Converting {} to a tag type should be ill-formed SFINAE-friendly

2024-04-30 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114898

--- Comment #1 from Jonathan Wakely  ---
Standalone testcase:

struct nullopt_t {
enum class Hidden { Token };
explicit constexpr nullopt_t(Hidden) noexcept { }
};

struct in_place_t {
explicit constexpr in_place_t() = default;
};

template
struct optional
{
template
optional(U&&) { }

optional(in_place_t);

optional(nullopt_t);
};

struct Widget {
int i[1];
};

optional r1( {{}} );

optional r2{ {} };