https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96840
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|WAITING |RESOLVED
--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
With the above patch we now detect and diagnose the self-recursive satisfaction
in the testcase:
96840.C: In substitution of ‘template<class T> requires C<T, Rep> void
operator*(T, Int<int>) [with T = int]’:
96840.C:1:64: required by substitution of ‘template<class T> requires C<T,
Rep> void operator*(Int<int>, T) [with T = int]’
96840.C:6:28: required from here
96840.C:1:37: required for the satisfaction of ‘C<T, Rep>’ [with T =
Int<int>; Rep = int]
96840.C:1:41: in requirements with ‘T t’, ‘U u’ [with U = int; T = Int<int>]
96840.C:1:41: error: satisfaction of atomic constraint ‘requires(T t, U u) {t *
u;} [with U = Rep; T = T]’ depends on itself
1 | template <class T, class U> concept C = requires(T t, U u) { t * u; };
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So I suppose we can mark this PR as resolved.