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