This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/1929: template "nested" class problem
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/1929: template "nested" class problem
- From: x dot lsi dot maillard at wanadoo dot fr
- Date: 10 Feb 2001 21:46:40 -0000
- Reply-To: x dot lsi dot maillard at wanadoo dot fr
>Number: 1929
>Category: c++
>Synopsis: template "nested" class problem
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Feb 10 13:56:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Xavier MAILLARD (fxgs project director)
>Release: 2.94.x
>Organization:
>Environment:
HPUX 10.20 and Linux (mandrake version 6.1)
>Description:
I made a few time ago, a template class for doublylinked list.
I made it using smart pointer. The organization of the class
was made as follow :
template <class X> list
{
class cell
{
//body
}
class head //class storing the list head adress with the smart ptr
{
//body
}
public:
//body class list
class parc //stepper class for the list
};
As you know using data structure is often leading you to sort it
So I wanted to do some quicksort algorithm using my class.
What was my surprise when I saw that using directly the list<X>::parc made my compiler
bugging.
>How-To-Repeat:
>Fix:
I found a way to avoid it : I created another stepper class inherited from
list<X>::parc without nothing except a constructor.
Then I could apply my algorithm with the list class.
(ie. my file attachement)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="tri.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tri.h"
I2luY2x1ZGUgImxpc3RlZGNjLmgiCgoKdGVtcGxhdGUgPGNsYXNzIFg+IGlubGluZSB2b2lkIHN3
YXAoWCAmIGEsIFggJiBiKQp7CglYIHRtcChiKTsKCWI9YTsKCWE9dG1wOwp9CgoKLy9ib2d1ZSBk
dSBjb21waWxvIDotKSA9PiBjbGFzc2UgcG91ciBwb3V2b2lyIGZhaXJlIGxlIHRyaSBRU29ydCAh
ISEKdGVtcGxhdGUgPGNsYXNzIFg+IGNsYXNzIFBQYXJjOiBwdWJsaWMgbGlzdGU8WD46OlBhcmMK
ewoJcHVibGljOgoJCVBQYXJjKGNvbnN0IGxpc3RlIDxYPjo6UGFyYyAmIHApCgkJOmxpc3RlPFg+
OjpQYXJjKHApCgkJe30KfTsKCnRlbXBsYXRlIDxjbGFzcyBYPiB2b2lkIFFTKFBQYXJjPFg+ICYg
UDEsIFBQYXJjPFg+ICYgUDIpCnsKCWlmKFAxIT1QMikKCXsKCQlsaXN0ZTxYPjo6UGFyYyBwMihQ
Mik7CgkJWCAqIHA9JigtLXAyKTsKCQlpZihQMSE9cDIpCgkJewoJCQlsaXN0ZTxYPjo6UGFyYyBw
MShQMSk7CgkJCVggKiBjMSwgKmMyPXA7CgkJCWRvCgkJCXsKCQkJCXdoaWxlKCooYzE9JihwMSsr
KSk8KnApOwoJCQkJd2hpbGUoYzEhPWMyICYmICooYzI9JigtLXAyKSk+PSpwKTsKCQkJCWlmKGMx
IT1jMikKCQkJCQlzd2FwKCpjMSwqYzIpOwoJCQl9CgkJCXdoaWxlKGMxIT1jMik7CgkJCWlmKGMx
IT1wKQoJCQkJc3dhcCgqYzEsKnApOwoJCQkKCQkJLy9wb3VyIGV2aXRlciBsZXMgd2FybmluZ3Mg
ZCdpbml0IGR1IHN0eWxlIFBQYXJjPFg+IChwMSkuLi4KCQkJUFBhcmM8WD4gUDMocDIpOwoJCQlQ
UGFyYzxYPiBQNChwMSk7CgkJCQoJCQkKCQkJUVMoUDEsUDMpOwoJCQlRUyhQNCxQMik7CgkJfQoJ
fQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgWD4gdm9pZCBRdWlja1NvcnQobGlzdGU8WD4gJiBsKQp7Cgls
aXN0ZTxYPjo6UGFyYyBwMShsKTsKCWxpc3RlPFg+OjpQYXJjIHAyKGwpOwoJcDEuQWxsZXJEZWJ1
dCgpOwoJcDIuQWxsZXJGaW4oKTsKCQoJLy9wb3VyIGV2aXRlciBsZXMgd2FybmluZ3MgZCdpbml0
IGRlIFBQYXJjPFg+IChwMSkuLi4KCVBQYXJjPFg+IFAxKHAxKTsKCVBQYXJjPFg+IFAyKHAyKTsK
CQoJLy9vbiBhcHBlbGxlIFFTCglRUyhQMSxQMik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBYPiBYIE1p
bmltdW0obGlzdGU8WD4gJiBsKQp7CglsaXN0ZTxYPjo6UGFyYyBwKGwpOwoJcC5BbGxlckRlYnV0
KCk7CglYIG1pbj1wKys7Cgl3aGlsZSghcC5GaW4oKSkKCXsKCQlpZihtaW4+cCsrKQoJCXsKCQkJ
LS1wOwoJCQltaW49cCsrOwoJCX0KCX0KCQoJcmV0dXJuIG1pbjsKfQoKdGVtcGxhdGUgPGNsYXNz
IFg+dm9pZCBUcmlTZWxlY3Rpb24obGlzdGU8WD4gJiBsKQp7CglsaXN0ZSA8WD46OlBhcmMgcDEo
bCk7CglsaXN0ZSA8WD46OlBhcmMgcDIobCk7CglwMS5BbGxlckRlYnV0KCk7CglwMi5BbGxlckRl
YnV0KCk7CglwMisrOwoJd2hpbGUoIXAyLkZpbigpKQoJewoJCWlmKHAxKys+cDIrKykKCQkJc3dh
cCgtLXAxLC0tcDIpOwoJCWVsc2UKCQkJLS1wMSwtLXAyOwoJCXAxKys7CgkJcDIrKzsKCX0KfQoK
I2RlZmluZSBJbnN0VHJpKFQpCQkJXAoJdGVtcGxhdGUgY2xhc3MgUFBhcmM8VD47CQlcCgl0ZW1w
bGF0ZSB2b2lkIFFTPFQ+KFBQYXJjPFQ+ICYgLCBQUGFyYzxUPiAmICk7IFwKCXRlbXBsYXRlIHZv
aWQgUXVpY2tTb3J0PFQ+KGxpc3RlPFQ+ICYgKTsK