view gcc/testsuite/g++.dg/cpp0x/extern_template-5.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++/87554
// { dg-options "-O" }

template < class a > class b {
  static void c(a);
  static a &create() { c(instance); return mya; }

  static a mya;

public:
  static a d() { create(); return a(); }
  static a &instance;
};
template < class a > a &b< a >::instance = create();
class e;
class f {
public:
  void operator()(int g) { h(g); }
  template < class a > void h(a i) { p(j, i); }
  e *j;
};
class e : public f {
public:
  e(int);
};
struct k {
  int l;
};
template < class m, class a > void p(m, a) { b< k >::d(); }
extern template class b< k >;
int n;
int o;
void test() {
  e out(o);
  out(n);
}