Q. about POD with const member (or g++ vs. Comeau)

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
 
G

gpderetta

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 ?

gcc version 4.3.1 20080404 (prerelease) [gcc-4_3-branch revision
133917] (Ubuntu 20080404-0ubuntu1)

test.cc: In function 'int main()':
test.cc:9: warning: unused variable 's'

same warning. No hard error.

HTH,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,754
Messages
2,569,525
Members
44,997
Latest member
mileyka

Latest Threads

Top