// RUN: %clang_cc1 -std=c++17 -verify %s

namespace pr41427 {
  template <typename T> class A {
  public:
    A(void (*)(T)) {}
  };

  void D(int) {}

  void f() {
    A a(&D);
    using T = decltype(a);
    using T = A<int>;
  }
}

namespace Access {
  struct B {
  protected:
    struct type {};
  };
  template<typename T> struct D : B { // expected-note {{not viable}}
    D(T, typename T::type); // expected-note {{private member}}
  };
  D b = {B(), {}};

  class X {
    using type = int;
  };
  D x = {X(), {}}; // expected-error {{no viable constructor or deduction guide}}

  // Once we implement proper support for dependent nested name specifiers in
  // friends, this should still work.
  class Y {
    template <typename T> friend D<T>::D(T, typename T::type); // expected-warning {{dependent nested name specifier}}
    struct type {};
  };
  D y = {Y(), {}};

  class Z {
    template <typename T> friend class D;
    struct type {};
  };
  D z = {Z(), {}};
}
