S
Stefan Naewe
Given the following:
// ++ CODE
struct S
{
const int ci;
};
int main()
{
S * s = new S;
}
// -- CODE
Comeau Online gives me:
// ++ output
Comeau C/C++ 4.3.10.1 (May 29 2008 09:37:15) for ONLINE_EVALUATION_BETA1
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 1: warning: class "S" defines no constructor to
initialize the
following:
const member "S::ci"
struct S
^
"ComeauTest.c", line 8: error: object has an uninitialized const or
reference member
S * s = new S;
^
1 error detected in the compilation of "ComeauTest.c".
// -- output
Two different g++ versions (4.2.3 and "4.1.2 20061115 (prerelease) (Debian
4.1.1-21)" give me:
// ++ output
constmember.cc: In function 'int main()':
constmember.cc:8: warning: unused variable 's'
// -- output
Reading 5.3.4.15 (and 8.5.5) of the holy standard
I'd say Comeau is right, the program is ill-formed, isn't it?
What about g++ ? Can anyone test this with the latest g++ (4.3.1), please ?
Regards
Stefan
// ++ CODE
struct S
{
const int ci;
};
int main()
{
S * s = new S;
}
// -- CODE
Comeau Online gives me:
// ++ output
Comeau C/C++ 4.3.10.1 (May 29 2008 09:37:15) for ONLINE_EVALUATION_BETA1
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 1: warning: class "S" defines no constructor to
initialize the
following:
const member "S::ci"
struct S
^
"ComeauTest.c", line 8: error: object has an uninitialized const or
reference member
S * s = new S;
^
1 error detected in the compilation of "ComeauTest.c".
// -- output
Two different g++ versions (4.2.3 and "4.1.2 20061115 (prerelease) (Debian
4.1.1-21)" give me:
// ++ output
constmember.cc: In function 'int main()':
constmember.cc:8: warning: unused variable 's'
// -- output
Reading 5.3.4.15 (and 8.5.5) of the holy standard
I'd say Comeau is right, the program is ill-formed, isn't it?
What about g++ ? Can anyone test this with the latest g++ (4.3.1), please ?
Regards
Stefan