| // PR c++/102412 | |
| // { dg-do link { target c++20 } } | |
| template<class T, class U> concept C = __is_same(T, U); | |
| template<class T, bool = C<int, T>> void f(); | |
| template<> void f<int, true>() { } | |
| template<> void f<char, false>() { } | |
| template<bool = C<int, char>> void g(); | |
| template<> void g<false>() { } | |
| template<bool = C<int, int>> void h(); | |
| template<> void h<true>() { } | |
| int main() { | |
| f<int>(); | |
| f<char>(); | |
| g(); | |
| h(); | |
| } |