view gcc/testsuite/g++.dg/cpp2a/concepts-pr69235.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line source

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