view gcc/testsuite/g++.dg/template/mem-spec1.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
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