aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
blob: 80ef47180a92e6ff959fd2b43b4bc029070588a1 (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
32
33
34
35
36
37
38
39
40
41
42
43
// { dg-do assemble  }
// GROUPS passed old-abort
/*
   I received the following message when using g++ (version 2.3.3):

   main.cc: In method 'Implicit<implicit<INTEGER,2>,3>::Implicit()':
   main.cc: Internal compiler error 241.
   main.cc: Please report this to 'bug-g++@prep.ai.mit.edu'
   */

#include <iostream>

class INTEGER {
int x;
public:
   typedef int BASE;
   INTEGER(int y) : x(y) {}
   INTEGER() {}
   void encode() { std::cout << "Integer encoder";}
   int operator=(int y) { x=y; return x; }
   operator int() {return x; }
};

template< class T,  int n> class Implicit : public T {
   public:
     typedef typename T::BASE BASE;
     Implicit(BASE value ): T(value) {}
     Implicit() : T() {}
     int myTag() { return n; }
     void encode() { T::encode(); }
     BASE operator=(BASE t) { return T::operator=(t); }
};

int
main() 
{
  Implicit<Implicit<INTEGER, 2> ,  3> y;

  y = 10;
}