From mboxrd@z Thu Jan 1 00:00:00 1970 From: weissr@informatik.uni-tuebingen.de To: gcc-gnats@gcc.gnu.org Subject: c++/3671: g++ incorrectly tries to instantiate multiple member template specializations Date: Fri, 13 Jul 2001 03:26:00 -0000 Message-id: <20010713102109.8039.qmail@sourceware.cygnus.com> X-SW-Source: 2001-07/msg00368.html List-Id: >Number: 3671 >Category: c++ >Synopsis: g++ incorrectly tries to instantiate multiple member template specializations >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Fri Jul 13 03:26:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Roland Weiss >Release: gcc version 3.0 >Organization: >Environment: i686-pc-linux-gnu, Linux Mandrake 8.0 >Description: g++ emits the following error message when compiling my test program: Dependent_Types_Specialization.cpp: In function `int main()': Dependent_Types_Specialization.cpp:79: cannot convert `Index2' to `Index1' in initialization Dependent_Types_Specialization.cpp:79: non-constant `' cannot be used as template argument The problems seems to be that g++ incorrectly tries to instantiate both versions of the get_index member template in the class template Compound_Type. Therefore the index_type given at the instantiation place in the main program will not match one version and trigger the error message. The program compiles without problems using the EGD frontend 2.44. >How-To-Repeat: run g++ on the file Dependent_Types_Specialization.cpp, no special flags are needed >Fix: don't know one! >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/x-c++src; name="Dependent_Types_Specialization.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Dependent_Types_Specialization.cpp" Ly8gVGhpcyB0ZXN0IHByb3BncmFtIGlzIHVzZWQgdG8gZXZhbHVhdGUgdGhlIGNvbXBpbGVyIHRl bXBsYXRlIGluc3RhbnRpYXRpb24KLy8gbWVjaGFuaXNtIGZvciBtZW1iZXIgdGVtcGxhdGVzIHNw ZWNpYWxpemVkIG9uIGRlcGVuZGVudCB0eXBlcy4KCi8vI2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8g VGhpcyBpcyBzb21lIHNpbXBsZSBiYXNlIHR5cGUgdGhhdCB0YWtlcyB0d28gdGVtcGxhdGUgcGFy YW1ldGVycy4KLy8gIEluZGV4VCBpcyBhbiBpbmRleCB0eXBlLCB1c3VhbGx5IGFuIGVudW1lcmF0 aW9uLgovLyAgQ29udGVudFQgc3RvcmVzIHNvbWUgaW5mb3JtYXRpb24sIGRlcGVuZGluZyBpbiB0 aGUgaW5kZXggdHlwZS4KLy8gVGhlIGludGVudCBpcyB0byBhY2Nlc3MgdGhlIGNvbnRlbnQgd2l0 aCBpbmRleGVzIG9mIHRoZSBpbmRleCB0eXBlLCBidXQgZm9yCi8vIHRlc3RpbmcgcHVycG9zZXMg dGhlIGdldF9pbmRleCBmdW5jdGlvbiBqdXN0IHJldHVybnMgdGhlIGluZGV4Lgp0ZW1wbGF0ZSA8 dHlwZW5hbWUgSW5kZXhULCBjbGFzcyBDb250ZW50VD4Kc3RydWN0IEJhc2VfVHlwZQp7CiAgdHlw ZWRlZiBJbmRleFQgaW5kZXhfdHlwZTsKICB0eXBlZGVmIENvbnRlbnRUIGNvbnRlbnRfdHlwZTsK CiAgdGVtcGxhdGUgPEluZGV4VCBpPgogIEluZGV4VCBnZXRfaW5kZXgoKQogIHsKICAgIHJldHVy biBpOwogIH0KcHJpdmF0ZToKICBDb250ZW50VCBtX2NvbnRlbnQ7Cn07CgovLyBUaGlzIGlzIGEg Y29tcG91bmQgdHlwZSB0aGF0IGFnZ3JlZ2F0ZXMgdHdvIGJhc2UgdHlwZXMuIFRoZSBiYXNlIHR5 cGUKLy8gaW5zdGFudGlhdGlvbnMgYXJlIGdpdmVuIGFzIHRlbXBsYXRlIHBhcmFtZXRlcnMuCi8v IEZvciB0aGUgdHdvIGluZGV4IHR5cGVzIG9mIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHNwZWNp YWxpemVkIGZ1bmN0aW9ucwovLyBjYWxsZWQgZ2V0X2luZGV4IGFyZSBnaXZlbiBhbmQgdGhlIGFw cHJvcHJpYXRlIHNob3VsZCBiZSBzZWxlY3RlZCBhdAovLyBpbnN0YW50aWF0aW9uIHRpbWUuCnRl bXBsYXRlIDxjbGFzcyBCMSwgY2xhc3MgQjI+CnN0cnVjdCBDb21wb3VuZF9UeXBlCnsKICB0eXBl ZGVmIHR5cGVuYW1lIEIxOjppbmRleF90eXBlIEkxOwogIHR5cGVkZWYgdHlwZW5hbWUgQjE6OmNv bnRlbnRfdHlwZSBDMTsKICB0eXBlZGVmIHR5cGVuYW1lIEIyOjppbmRleF90eXBlIEkyOwogIHR5 cGVkZWYgdHlwZW5hbWUgQjI6OmNvbnRlbnRfdHlwZSBDMjsKCiAgdGVtcGxhdGUgPEkxIGk+CiAg STEgZ2V0X2luZGV4KCkKICB7CiAgICByZXR1cm4gaTsKICB9CgogIHRlbXBsYXRlIDxJMiBpPgog IEkyIGdldF9pbmRleCgpCiAgewogICAgcmV0dXJuIGk7CiAgfQoKcHJpdmF0ZToKICBCMSBiYXNl MTsKICBCMiBiYXNlMjsKfTsKCi8vIGluZGV4IHR5cGUgMQplbnVtIEluZGV4MSB7CiAgaTFfMSA9 IDEsIGkxXzIKfTsKCi8vIGluZGV4IHR5cGUgMgplbnVtIEluZGV4MiB7CiAgaTJfMSA9IDMsIGky XzIKfTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KaW50IG1haW4oKQp7CiAgQmFzZV9UeXBlPEluZGV4MSwgaW50PiBi MTsKICBCYXNlX1R5cGU8SW5kZXgyLCBpbnQ+IGIyOwogIGludCBpID0gYjEuZ2V0X2luZGV4PGkx XzE+KCk7IC8vIDEKICBpID0gYjIuZ2V0X2luZGV4PGkyXzE+KCk7IC8vIDMKICAvL3N0ZDo6Y291 dCA8PCBiMS5nZXRfaW5kZXg8aTFfMT4oKSA8PCAiXG4iOwogIC8vc3RkOjpjb3V0IDw8IGIyLmdl dF9pbmRleDxpMl8xPigpIDw8ICJcbiI7CgogIENvbXBvdW5kX1R5cGU8IEJhc2VfVHlwZTxJbmRl eDEsIGludD4sIEJhc2VfVHlwZTxJbmRleDIsIGludD4gPiBjOwoKICAvLyAhISEhISEhISEhISEh ISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEh ISEhISEKICAvLwogIC8vIEdDQyAyLjk1LjIgYW5kIEdDQyAzLjAgYm90aCB0cnkgdG8gaW5zdGFu dGlhdGUgYm90aCEgdmVyc2lvbnMgb2YgZ2V0X2luZGV4CiAgLy8gYW5kIHRoZXJlZm9yZSBmYWls IHRvIGNvbXBpbGUgdGhpcyBsaW5lLi4uCiAgLy8KICAvLyEhISEhISEhISEhISEhISEhISEhISEh ISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEKICBp ID0gYy5nZXRfaW5kZXg8aTJfMj4oKTsgLy8gNAogIC8vc3RkOjpjb3V0IDw8IGMuZ2V0X2luZGV4 PGkyXzI+KCkgPDwgIlxuIjsKCiAgLy9yZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==