summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/template/explicit-instantiation3.C
blob: fac092e6cbff644ff24e686bc65659554cd70e43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// { dg-do compile }
// Origin: <sebor at roguewave dot com>
// c++/8266: Explicit instantiation of a template outside its namespace is
//  broken

namespace N
{
  template <class T> T foo (T)
  { return T (); }

  struct A
  {
    template <int N>
    struct B {};
  };

  template <int M>
  struct C {};

  template double foo(double);
  template float  foo<float>(float);
  template struct A::B<0>;
  template struct C<0>;
}

template int    N::foo(int);
template char   N::foo<char>(char);
template struct N::A::B<1>;
template struct N::C<1>;