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

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Stefan Naewe

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

    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_EVALUATI ON_BETA1
    Copyright 1988-2008 Comeau Computing. All rights reserved.
    MODE:strict errors C++ C++0x_extension s

    "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
    --
    Stefan Naewe stefan dot naewe at atlas-elektronik dot com
    Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
    Plain text mails only, please http://www.expita.com/nomime.html
  • gpderetta

    #2
    Re: Q. about POD with const member (or g++ vs. Comeau)

    On Jun 25, 12:44 pm, Stefan Naewe <nos...@please. netwrote:
    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_EVALUATI ON_BETA1
    Copyright 1988-2008 Comeau Computing.  All rights reserved.
    MODE:strict errors C++ C++0x_extension s
    >
    "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,

    --
    gpd

    Comment

    Working...