(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
template/
access41.C
// PR c++/96204
// { dg-do compile { target c++14 } }
// A variant of access40.C where has_type_member is a variable template instead
// of a class template.

template<class, class = void>
constexpr bool has_type_member = false;

template<class T>
constexpr bool has_type_member<T, typename T::type> = true;

struct Parent;

struct Child {
private:
  friend struct Parent;
  typedef void type;
};

struct Parent {
  // The partial specialization does not match despite Child::type
  // being accessible from the current scope.
  static_assert(!has_type_member<Child>, "");
};