https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117392
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2024-11-01 Keywords| |rejects-valid Status|UNCONFIRMED |NEW See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=115314 CC| |ppalka at gcc dot gnu.org --- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> --- Confirmed, seems we're incorrectly treating the dependent specialization constant_wrapper<(L::value - R::value)> as if it were written constant_wrapper<(L::value - R::value), decltype(L::value - R::value)::type> i.e. the defaulted template argument lacks the implicit CTAD cast to fixed_value. So a workaround would be to add a redundant cast in the default template argument: template <fixed_value Value, typename AdlType = decltype(fixed_value(Value))::type> struct constant_wrapper;