From mboxrd@z Thu Jan 1 00:00:00 1970 From: gisli@adams.com To: gcc-gnats@gcc.gnu.org Subject: c++/4166: recursive member template call fails to compile Date: Wed, 29 Aug 2001 03:56:00 -0000 Message-id: <20010829104607.24531.qmail@sourceware.cygnus.com> X-SW-Source: 2001-08/msg00714.html List-Id: >Number: 4166 >Category: c++ >Synopsis: recursive member template call fails to compile >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Wed Aug 29 03:56:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Gisli Ottarsson >Release: unknown-1.0 >Organization: >Environment: ~ > gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85) >Description: First, my apologies if this report pertains to the known limitation "Two stage lookup in templates is not implemented". I am not smart enough to know whether this is a two stage template lookup problem. Perhaps your website should give an example of such a problem. When I compile the attached, self contained program, which features a member template for which an instantiation will call itself recursively, compilation fails with the following error message: gisli.cxx: In method `T *A::exhaustive_search (int) const [with T = B]': gisli.cxx:72: instantiated from here gisli.cxx:56: no matching function for call to `A::exhaustive_search (int &)' For what it is worth, the program compiles and runs with recent SGI, IBM and HP C++ compilers. >How-To-Repeat: g++ gisli.cxx >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="gisli.cxx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gisli.cxx" I2luY2x1ZGUgPGlvc3RyZWFtPiAKI2luY2x1ZGUgPGxpc3Q+IAogCi8vIAovLyAgU2ltcGxlIGJh c2UgZm9yIGEgdHJlZSBub2RlIHdpdGggYW4gaW50ZWdlciBpZCAKLy8gCmNsYXNzIEEgCnsgCiAg IGludCBfaWQ7IAogICBBKiBfcGFyZW50OyAKICAgc3RkOjpsaXN0PEEqPiBraWRzOyAKIApwdWJs aWM6IAogCiAgIEEoQSogcGFyZW50LCBpbnQgaSkgOiBfcGFyZW50KHBhcmVudCksIF9pZChpKXsg aWYgKHBhcmVudCkgcGFyZW50LT5raWRzLnB1c2hfYmFjayh0aGlzKTt9IAogICBBKGNvbnN0IEEm IG90aGVyKSA6IF9pZChvdGhlci5faWQpe30gCiAKICAgdGVtcGxhdGUgPGNsYXNzIFQ+IFQqIGV4 aGF1c3RpdmVfc2VhcmNoKGludCBzb3VnaHRfaWQpIGNvbnN0OyAKIAogICB2aXJ0dWFsIGludCBp ZCgpIGNvbnN0IHsgcmV0dXJuIF9pZDsgfSAKfTsgCiAKLy8gCi8vICBUd28gdHJpdmlhbCBkZXJp dmVkIGNsYXNzZXMsIEIgYW5kIEMgCi8vIAogCmNsYXNzIEIgOiBwdWJsaWMgQSAKeyAKcHVibGlj OiAKICAgQihBKiBwYXJlbnQsIGludCBpKSA6IEEocGFyZW50LGkpe30gCiAgIEIoY29uc3QgQiYg b3RoZXIpIDogQShvdGhlcil7fSAKfTsgCiAKY2xhc3MgQyA6IHB1YmxpYyBBIAp7IApwdWJsaWM6 IAogICBDKEEqIHBhcmVudCwgaW50IGkpIDogQShwYXJlbnQsaSl7fSAKICAgQyhjb25zdCBCJiBv dGhlcikgOiBBKG90aGVyKXt9IAp9OyAKIAovLyAKLy8gIGJyZWFkdGggZmlyc3Qgc2VhcmNoIGZv ciBhbiBvYmplY3Qgb2YgYSBjZXJ0YWluIHR5cGUgYW5kIGlkLiAKLy8gCiAKdGVtcGxhdGUgPGNs YXNzIFQ+IApUKiBBOjpleGhhdXN0aXZlX3NlYXJjaChpbnQgc291Z2h0X2lkKSBjb25zdCAKeyAK ICAgc3RkOjpsaXN0PEEqPjo6Y29uc3RfaXRlcmF0b3IgaTsgCiAgIGZvcihpPWtpZHMuYmVnaW4o KTsgaSE9a2lkcy5lbmQoKTsgKytpKSAKICAgeyAKICAgICAgVCogb2JqID0gZHluYW1pY19jYXN0 PFQqPigoKmkpKTsgCiAgICAgIGlmKG9iaiAmJiBvYmotPmlkKCk9PXNvdWdodF9pZCkgcmV0dXJu IG9iajsgCiAgIH0gCiAgIGZvcihpPWtpZHMuYmVnaW4oKTsgaSE9a2lkcy5lbmQoKTsgKytpKSAK ICAgeyAKICAgICAgVCogb2JqID0gKCppKS0+ZXhoYXVzdGl2ZV9zZWFyY2g8VD4oc291Z2h0X2lk KTsgCiAgICAgIGlmKG9iaikgcmV0dXJuIG9iajsgCiAgIH0gCiAgIHJldHVybiAwOyAKfSAKIApp bnQgbWFpbigpIAp7IAogICBBIHJvb3QoMCwwKTsgCiAKICAgQiBiMSgmcm9vdCwxKTsgCiAgIEIg YjIoJmIxLDIpOyAKIAogICBDIGMxKCZyb290LDEpOyAKICAgQyBjMigmYjIsMik7IAogCiAgIEIq IG9iaiA9IHJvb3QuZXhoYXVzdGl2ZV9zZWFyY2g8Qj4oMik7ICAgLy8gc2hvdWxkIGZpbmQgYjI7 CiAKICAgc3RkOjpjb3V0IDw8IG9iai0+aWQoKSA8PCBzdGQ6OmVuZGw7IAp9IAogCgoKCg==