public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/3671: g++ incorrectly tries to instantiate multiple member template specializations
@ 2002-06-07 7:47 lerdsuwa
0 siblings, 0 replies; 3+ messages in thread
From: lerdsuwa @ 2002-06-07 7:47 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, nobody, weissr
Synopsis: g++ incorrectly tries to instantiate multiple member template specializations
State-Changed-From-To: open->analyzed
State-Changed-By: lerdsuwa
State-Changed-When: Fri Jun 7 07:47:49 2002
State-Changed-Why:
Confirmed.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=3671
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c++/3671: g++ incorrectly tries to instantiate multiple member template specializations
@ 2002-11-21 21:06 Wolfgang Bangerth
0 siblings, 0 replies; 3+ messages in thread
From: Wolfgang Bangerth @ 2002-11-21 21:06 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c++/3671; it has been noted by GNATS.
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: gcc-gnats@gcc.gnu.org, <gcc-bugs@gcc.gnu.org>
Cc:
Subject: Re: c++/3671: g++ incorrectly tries to instantiate multiple member
template specializations
Date: Fri, 15 Nov 2002 20:25:42 -0600 (CST)
Good question what happens here:
----------------------------------
enum T1 {a};
enum T2 {b};
struct Y {
template <T1 i> void foo();
template <T2 i> void foo();
};
template void Y::foo<a> ();
// int main() {
// Y c;
// c.foo<a>();
// }
---------------------------------
I get
tmp/g> /home/bangerth/bin/gcc-3.3x-pre/bin/c++ x.cc
x.cc:9: error: cannot convert `T1' to `T2' in initialization
x.cc:9: error: non-constant `<expression error>' cannot be used as template
argument
x.cc: In instantiation of `void Y::foo() [with T1 i = a]':
x.cc:9: instantiated from here
x.cc:9: error: explicit instantiation of `void Y::foo() [with T1 i = a]'
but no
definition available
If I use the commented main function instead of the explicit
instantiation, I get
tmp/g> /home/bangerth/bin/gcc-3.3x-pre/bin/c++ x.cc
x.cc: In function `int main()':
x.cc:13: error: cannot convert `T1' to `T2' in initialization
x.cc:13: error: non-constant `<expression error>' cannot be used as template
argument
which I find even less helpful.
Regards
Wolfgang
-------------------------------------------------------------------------
Wolfgang Bangerth email: bangerth@ticam.utexas.edu
www: http://www.ticam.utexas.edu/~bangerth
^ permalink raw reply [flat|nested] 3+ messages in thread
* c++/3671: g++ incorrectly tries to instantiate multiple member template specializations
@ 2001-07-13 3:26 weissr
0 siblings, 0 replies; 3+ messages in thread
From: weissr @ 2001-07-13 3:26 UTC (permalink / raw)
To: gcc-gnats
>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==
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-11-16 2:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-06-07 7:47 c++/3671: g++ incorrectly tries to instantiate multiple member template specializations lerdsuwa
-- strict thread matches above, loose matches on Subject: below --
2002-11-21 21:06 Wolfgang Bangerth
2001-07-13 3:26 weissr
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).