view gcc/testsuite/g++.dg/template/mem-spec1.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

// 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