https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107525
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:7c6008e75df80607f8104e665e0448a0a9cbf85a commit r13-3695-g7c6008e75df80607f8104e665e0448a0a9cbf85a Author: Jonathan Wakely <jwak...@redhat.com> Date: Fri Nov 4 15:05:41 2022 +0000 libstdc++: Do not use SFINAE for propagate_const conversions [PR107525] As the PR notes, the current conversion operators are defined as function templates so that we can use SFINAE. But this changes how they are considered for overload resolution. This moves those operators into base classes that can be specialized so the operators are obsent unless the constraints are satisfied. libstdc++-v3/ChangeLog: PR libstdc++/107525 * include/experimental/propagate_const (operator element_type*()): Move into base class that can be partially specilized to iompose constraints. (operator const element_type*()): Likewise. * testsuite/experimental/propagate_const/observers/107525.cc: New test.