This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
c++/4525: Can't construct member function of class template with pointer to member as argument, if the argument type is constructed out of the template argument
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/4525: Can't construct member function of class template with pointer to member as argument, if the argument type is constructed out of the template argument
- From: philipp dot bachmann at obtree dot com
- Date: 10 Oct 2001 17:12:54 -0000
- Reply-To: philipp dot bachmann at obtree dot com
>Number: 4525
>Category: c++
>Synopsis: Can't construct member function of class template with pointer to member as argument, if the argument type is constructed out of the template argument
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Oct 10 10:16:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Philipp Bachmann
>Release: g++ 2.95.3
>Organization:
>Environment:
Sun Solaris 7 SPARC
>Description:
Member functions of class templates can't have arguments built out of types "typedef"ed in the classes referred to by the template arguments even if "typename"d.
g++ says
"[1090]$ g++ pointer2member.cxx
pointer2member.cxx:71: common_type called with uncommon member types (compiler error)"
I don't see why my code is illegal.
Sun Workshop / Forte CC 6 U 1 has no problems with this code. I don't have other compilers at hand, so I can't tell their behaviour.
>How-To-Repeat:
Just comment out line 14 of the code supplied and try to compile.
>Fix:
Workaround: Commenting in line 14 activates a trivial workaround.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pointer2member.cxx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pointer2member.cxx"
LyogJExvZzogcG9pbnRlcjJtZW1iZXIuY3h4LHYgJA0KICogUmV2aXNpb24gMS4xICAyMDAxLzEw
LzEwIDE3OjQ0OjU3ICBiYWNobGlwcA0KICogSW5pdGlhbCByZXZpc2lvbg0KICogKi8NCg0KLyog
UHVycG9zZTogRGVtb25zdHJhdGUgdHdvIHBvdGVudGlhbCBidWdzIGluIEdOVSBnKysgMi45NS4z
Og0KICAgQlVHMDogQWxsb3dzIGZvciBtb2RpZnlpbmcgbWVtYmVycyBvZiBjb25zdCBpbnN0YW5j
ZXMgdXNpbmcgbm9uIGNvbnN0DQogICAgICAgICBwb2ludGVyIHRvIGVsZW1lbnRzIGFuZA0KICAg
QlVHMTogTWVtYmVyIGZ1bmN0aW9ucyBvZiBjbGFzcyB0ZW1wbGF0ZXMgY2FuJ3QgaGF2ZSBlbGVt
ZW50IHBvaW50ZXINCiAgICAgICAgIGFyZ3VtZW50cyBidWlsdCBvdXQgb2YgdHlwZWRlZnMgaW4g
dGhlIGNsYXNzZXMgcmVmZXJyZWQgdG8gYnkgdGhlDQoJIHRlbXBsYXRlIGFyZ3VtZW50cyBldmVu
IGlmICJ0eXBlbmFtZSJkLiAqLw0KDQojZGVmaW5lIEJVRzANCiNkZWZpbmUgQlVHMQ0KDQojaW5j
bHVkZSA8aW9zdHJlYW0+DQojaW5jbHVkZSA8c3RkbGliLmg+DQoNCnN0YXRpYyBjaGFyIF9yY3Np
ZFtdPSIkSWQ6IHBvaW50ZXIybWVtYmVyLmN4eCx2IDEuMSAyMDAxLzEwLzEwIDE3OjQ0OjU3IGJh
Y2hsaXBwIEV4cCAkIjsNCg0KdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCg0KLyogRGVjbGFyYXRpb25z
Li4uICovDQpzdHJ1Y3QgYmFzZV90IHsNCiAgdHlwZWRlZiBpbnQgbWVtYmVyVHlwZTsNCiAgaW50
IGFOdW1iZXJfOw0KICBiYXNlX3Qodm9pZCk7DQogIHZvaWQgcHJpbnQodm9pZCkgY29uc3Q7DQp9
Ow0KDQp2b2lkIHNldChiYXNlX3QgJiwgaW50IGJhc2VfdDo6KiBjb25zdCAmLGludCk7DQoNCnRl
bXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNldHRlcjAgew0KICB2b2lkIG9wZXJhdG9yKCkoVCAm
LCBpbnQgVDo6KiBjb25zdCAmLGludCk7DQp9Ow0KDQojaWZuZGVmIEJVRzENCnRlbXBsYXRlPCBj
bGFzcyBUID4gc3RydWN0IHNldHRlcjEgew0KICB2b2lkIHRlc3QodHlwZW5hbWUgVDo6bWVtYmVy
VHlwZSk7DQogIHZvaWQgb3BlcmF0b3IoKShUICYsIHR5cGVuYW1lIFQ6Om1lbWJlclR5cGUgVDo6
KiBjb25zdCAmLGludCk7DQp9Ow0KI2Vsc2UNCnRlbXBsYXRlPCBjbGFzcyBULGNsYXNzIFUgPiBz
dHJ1Y3Qgc2V0dGVyMSB7DQogIHZvaWQgb3BlcmF0b3IoKShUICYsVSBjb25zdCAmLGludCk7DQp9
Ow0KI2VuZGlmDQoNCi8qIERlZmluaXRpb25zLi4uICovDQpiYXNlX3Q6OmJhc2VfdCh2b2lkKSA6
IGFOdW1iZXJfKDApIHsNCn0NCg0Kdm9pZCBiYXNlX3Q6OnByaW50KHZvaWQpIGNvbnN0IHsNCiAg
Y2Vycjw8ImFOdW1iZXJfID0gIjw8YU51bWJlcl88PGVuZGw7DQp9DQoNCnZvaWQgc2V0KGJhc2Vf
dCAmYiwgaW50IGJhc2VfdDo6KiBjb25zdCAmcCxpbnQgaSkgew0KICBiLipwPWk7DQp9DQoNCnRl
bXBsYXRlPGNsYXNzIFQ+DQp2b2lkIHNldHRlcjA8IFQgPjo6b3BlcmF0b3IoKShUICZ0LCBpbnQg
VDo6KiBjb25zdCAmcCxpbnQgaSkgew0KICB0LipwPWk7DQp9DQoNCiNpZm5kZWYgQlVHMQ0KdGVt
cGxhdGU8Y2xhc3MgVD4NCnZvaWQgc2V0dGVyMTwgVCA+Ojp0ZXN0KHR5cGVuYW1lIFQ6Om1lbWJl
clR5cGUgaSkgew0KfQ0KDQp0ZW1wbGF0ZTxjbGFzcyBUPg0Kdm9pZCBzZXR0ZXIxPCBUID46Om9w
ZXJhdG9yKCkoVCAmdCwgdHlwZW5hbWUgVDo6bWVtYmVyVHlwZSBUOjoqIGNvbnN0ICZwLGludCBp
KSB7DQogIHQuKnA9aTsNCn0NCiNlbHNlDQp0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFU+DQp2b2lk
IHNldHRlcjE8IFQsVSA+OjpvcGVyYXRvcigpKFQgJnQsVSBjb25zdCAmcCxpbnQgaSkgew0KICB0
LipwPWk7DQp9DQojZW5kaWYNCg0KaW50IG1haW4oKSB7DQogIGJhc2VfdCBiMDsNCiAgaW50IGJh
c2VfdDo6KnAwKCZiYXNlX3Q6OmFOdW1iZXJfKTsNCiAgYjAucHJpbnQoKTsNCiAgYjAuKnAwPTQy
Ow0KICBiMC5wcmludCgpOw0KDQogIGNvbnN0IGJhc2VfdCBiMTsNCiAgaW50IGNvbnN0IGJhc2Vf
dDo6KnAxKCZiYXNlX3Q6OmFOdW1iZXJfKTsNCiAgYjEucHJpbnQoKTsNCiAgLy8gT25seSBTdW4g
V29ya3Nob3AgLyBGb3J0ZSBDQyA2IFUgMSBkb2Vzbid0IGFjY2VwdCB0aGlzIC0gZysrIDIuOTUu
MyBkb2VzIQ0KICAjaWZkZWYgQlVHMA0KICAgIGIxLipwMD00MjsNCiAgI2VuZGlmDQogIGIxLnBy
aW50KCk7DQoNCiAgLy8gSWxsZWdhbCB3aXRoIGJvdGggU3VuIFdvcmtzaG9wIC8gRm9ydGUgQ0Mg
NiBVIDEgYW5kIGcrKyAyLjk1LjMuLi4NCiAgLy8gYjAuKnAxPTExOw0KICBiMC5wcmludCgpOw0K
DQogIHNldChiMCxwMCwyMik7DQogIGIwLnByaW50KCk7DQoNCiAgc2V0dGVyMDxiYXNlX3Q+IHMw
Ow0KICBzMChiMCxwMCwxMTEpOw0KICBiMC5wcmludCgpOw0KDQogICNpZm5kZWYgQlVHMQ0KICAg
IHNldHRlcjE8YmFzZV90PiBzMTsNCiAgI2Vsc2UNCiAgICBzZXR0ZXIxPGJhc2VfdCxiYXNlX3Q6
Om1lbWJlclR5cGUgYmFzZV90OjoqPiBzMTsNCiAgI2VuZGlmDQogIHMxKGIwLHAwLDExMik7DQog
IGIwLnByaW50KCk7DQoNCiAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsNCn0NCg==