// { dg-do compile { target c++17_only } }
// { dg-options "-fconcepts" }

template<typename T>
concept bool C1()
{
  return requires (T t) { t.f(); }; // { dg-message "in requirements" }
}

template<typename T>
concept bool C2()
{
  return requires { typename T::type; }; // { dg-message "in requirements" }
}

template<typename T>
  requires C1<T>()
void f1(T x) { }

template<typename T>
  requires C2<T>()
void f2(T x) { }

// Note that these declarations are private and therefore
// cannot satisfy the constraints.
class S
{
  using type = int;
  void f() { }
} s;

int main()
{
  f1(s); // { dg-error "no match" }
  f2(s); // { dg-error "" }

  // When used in non-SFINAE contexts, make sure that we fail
  // the constraint check before emitting the access check
  // failures. The context is being presented consistently
  // in both cases.
  static_assert(C1<S>(), ""); // { dg-error "failed" }
  static_assert(C2<S>(), ""); // { dg-error "" }
}
