https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107429
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |ppalka at gcc dot gnu.org Resolution|--- |DUPLICATE --- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> --- Thanks for the bug report. This is a consequence of CWG2369, and the constraint recursion diagnosis is strictly speaking correct correct. I think other compilers accept it because they don't fully implement https://wg21.link/cwg2369 which moved the constraint satisfaction check during template argument deduction to _before_ the checking non-dependent conversions. A workaround (that should be valid pre- and post-CWG2369) is to encode the non-dependent conversion in the constrained overload of f as an additional constraint that's checked before the fooable constraint: template<std::convertible_to<tag_bar> U, typename... T> requires (fooable<T...>) auto f(U, T... x) see PR99599 and its dups for more info *** This bug has been marked as a duplicate of bug 99599 ***