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;
}
|