blob: 5e96d0e7b7de42206de6807ae474b3f91dff94b5 [file] [log] [blame]
// { dg-do compile { target c++2a } }
// { 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;
}