(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
template/
mem-spec1.C
// PR c++/89744

namespace N1 {
  template<typename> struct A
  {
    template<typename> struct B {};
    A() { B<int> b; }
  };

  template<> template<typename>
  struct A<int>::B
  {
    virtual void foo() {}
  };

  A<int> a;
}

namespace N2 {
  template<typename> struct A
  {
    template<typename> struct B {};
    A() { B<int> b; }
  };

  template<> template<typename>
  struct A<int>::B
  {
    virtual void foo() {}
    void bar() {}
  };

  A<int> a;
}

namespace N3 {
  template<typename> struct A
  {
    template<typename> struct B {};
    A() { B<int> b; }
  };

  template<> template<typename>
  struct A<int>::B
  {
    ~B() {}
  };

  A<int> a;
}

#if __cpp_variadic_templates
namespace N4 {
  template<typename...> struct A
  {
    template<typename> struct B {};
    typedef B<int> X;
  };

  template<> template<typename>
  struct A<int>::B
  {
    typedef int Y;
  };

  A<int>::B<int> b;
}
#endif