// { dg-do compile { target c++20 } } | |
// { dg-additional-options "-fconcepts-ts" } | |
template<typename T> | |
concept bool Boolean() | |
{ | |
return requires(T t) | |
{ | |
{ t } -> bool; | |
}; | |
} | |
template<typename T> | |
concept bool C() | |
{ | |
return requires (T t) | |
{ | |
{ t } -> Boolean; | |
}; | |
} | |
template<typename T> | |
struct X; | |
template<typename T> | |
requires ! C<typename T::type>() | |
struct X<T> | |
{ | |
using type = int; | |
}; | |
template<typename T> | |
requires C<typename T::type>() | |
struct X<T> | |
{ | |
using type = int; | |
}; | |
struct S | |
{ | |
using type = char; | |
}; | |
void f() | |
{ | |
X<S>::type x; | |
} | |