This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/3671: g++ incorrectly tries to instantiate multiple member template specializations



>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 `<expression error>' 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==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]