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

philipp.bachmann@obtree.com philipp.bachmann@obtree.com
Wed Oct 10 10:16:00 GMT 2001


>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==



More information about the Gcc-bugs mailing list