[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-12-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

Patrick Palka  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED
   Target Milestone|--- |16.0

--- Comment #5 from Patrick Palka  ---
Fixed for GCC 16

[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-12-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

--- Comment #4 from GCC Commits  ---
The master branch has been updated by Patrick Palka :

https://gcc.gnu.org/g:bae0ed69e1862add152f1b0618148f931611a9ca

commit r16-5967-gbae0ed69e1862add152f1b0618148f931611a9ca
Author: Egas Ribeiro 
Date:   Sun Dec 7 23:35:00 2025 +

c++: Fix SFINAE for deleted explicit specializations [PR119343]

When checking a deleted explicit specialization in a SFINAE context,
we were incorrectly selecting a partial specialization because
resolve_nondeduced_context was calling mark_used.  But resolving an
overload to a single function (per DR 115) does not constitute ODR-use,
so mark_used shouldn't be called there.  Instead callers should call
mark_used or mark_single_function on the result to uniformly handle all
resolvable overloads (even non-template-id ones).

This turns out to fix the below testcase because it causes convert_to_void
for void(X::template g<0>) to properly propagate ODR-use failure (due to
deleted g<0>) and return error_mark_node instead of returning void_node.

PR c++/119343

gcc/cp/ChangeLog:

* pt.cc (resolve_nondeduced_context): Remove mark_used call.

gcc/testsuite/ChangeLog:

* g++.dg/template/sfinae-deleted-pr119343.C: New test.

Signed-off-by: Egas Ribeiro 
Reviewed-by: Patrick Palka 

[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-11-30 Thread egas.g.ribeiro at tecnico dot ulisboa.pt via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

--- Comment #3 from Egas  Ribeiro  ---
Patch submitted:
https://gcc.gnu.org/pipermail/gcc-patches/2025-November/702436.html

[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-11-21 Thread nshead at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

Nathaniel Shead  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |egas.g.ribeiro at 
tecnico dot ulis
   ||boa.pt
 CC||nshead at gcc dot gnu.org

[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-03-17 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

Andrew Pinski  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2025-03-17
   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW

--- Comment #2 from Andrew Pinski  ---
Confirmed.

[Bug c++/119343] No SFINAE for deleted explicit specializations

2025-03-17 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119343

--- Comment #1 from Andrew Pinski  ---
4.8.0 used to do something similar for has_f too. Maybe that can help someone.