blob: 1df563b341c5a92087fe0360bcb16d35715ec26a [file] [log] [blame]
// { 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;
}