1 // PR c++/67147
2 // { dg-do compile { target c++20 } }
3
4 template <class F, class I1, class I2 = I1>
5 concept IndirectCallableRelation = true;
6
7 template <class, class, class = void>
indirect_relation()8 constexpr bool indirect_relation() { return false; }
9
10 // FIXME: The original bug was found using the introducer syntax.
11
12 template<typename F, typename I1>
13 requires IndirectCallableRelation<F, I1>
indirect_relation()14 constexpr bool indirect_relation() { return true; }
15
16 template<typename F, typename I1, typename I2>
17 requires IndirectCallableRelation<F, I1, I2>
indirect_relation()18 constexpr bool indirect_relation() { return true; }
19
20 // This was added to the discussion thread as a minimum repro.
21
22 template<typename T, int = sizeof(T)>
23 concept C1 = true;
24
25 template <C1 T> int test();
26