c++/6351: GCC dosn't compile a correct code.

comer@mailru.com comer@mailru.com
Thu Apr 18 04:58:00 GMT 2002


>Number:         6351
>Category:       c++
>Synopsis:       GCC dosn't compile a correct code.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Thu Apr 18 04:06:11 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     comer@mailru.com
>Release:        2.95.3-5 (cygwin-version)
>Organization:
>Environment:
Windows 2000
>Description:
enum_plus.cpp:9: enumerator value for `MY_MAX' not integer constant
enum_plus.cpp: In function `enum {anonymous} operator +<{anonymous enum}, int>(c
onst {anonymous enum} &, const int &)':
enum_plus.cpp:9:   instantiated from here
enum_plus.cpp:4: assignment of read-only reference `a'
>How-To-Repeat:
template<class TypeA, class TypeB>
TypeA operator+(const TypeA& a, const TypeB& b)
{
	return TypeA(a)+=b;
}

enum { MY_MIN = 0 };

enum { MY_MAX = MY_MIN+10 };

int main(void)
{
}

>Fix:
Change
   enum { MY_MAX = MY_MIN+10 };
to
   enum { MY_TMP = MY_MIN, MY_MAX = MY_TMP+10 };
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="enum_plus.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="enum_plus.cpp"

dGVtcGxhdGU8Y2xhc3MgVHlwZUEsIGNsYXNzIFR5cGVCPg0KVHlwZUEgb3BlcmF0b3IrKGNvbnN0
IFR5cGVBJiBhLCBjb25zdCBUeXBlQiYgYikNCnsNCglyZXR1cm4gVHlwZUEoYSkrPWI7DQp9DQoN
CmVudW0geyBNWV9NSU4gPSAwIH07DQoNCmVudW0geyBNWV9UTVAgPSBNWV9NSU4sIE1ZX01BWCA9
IE1ZX1RNUCsxMCB9Ow0KDQppbnQgbWFpbih2b2lkKQ0Kew0KfQ0KDQo=



More information about the Gcc-bugs mailing list