| // { 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; | |
| } | |