g++ standards support

13,320

Solution 1

gcc doesn't support the uncorrected standard, it's aiming at (although doesn't reach 100%) C++03 conformance. Technically, there is only one current standard of C++ and the version including TC1 is it. As it says "supports most of the changes in C++03. To select this standard... use one of the options -ansi or -std=c++98".

There is no support or option to select the obsolete uncorrected 1998 version of the standard.

Solution 2

At least as far as I know, no, there is no way to "turn off" support for (either of) the new features of C++03.

-ansi is recognized by C front end. To get more about which components recognize which switches, you can use g++ -v --help (this produces a lot of output, so you usually want to pipe it to less or something on that order).

Share:
13,320
Cedric H.
Author by

Cedric H.

#STOPSHELL

Updated on July 25, 2022

Comments

  • Cedric H.
    Cedric H. almost 2 years

    I am a bit puzzled reading this: Gcc 4.5 online manual --- Standards section.

    They explain this

    The original ISO C++ standard was published as the ISO standard (ISO/IEC 14882:1998) and amended by a Technical Corrigenda published in 2003 (ISO/IEC 14882:2003). These standards are referred to as C++98 and C++03, respectively. GCC implements the majority of C++98 (export is a notable exception) and most of the changes in C++03.

    But they don't tell if gcc support the 'bare' 98 C++ or only the corrected C++03. In the 'C language' section the explanation is more clear:

    Errors in the 1999 ISO C standard were corrected in three Technical Corrigenda published in 2001, 2004 and 2007. GCC does not support the uncorrected version.

    So my question is: is it also the case for g++ (no support of the uncorrected standard) ?

    The only 4 options to select a g++ standard are then -std=c++98, -std=gnu++98,-std=c++0x, and -std=gnu++0x. Is that correct ?

    And last subquestion: What is the -ansi option then ? Is it only used in C mode ?

    Edit:

    -ansi A synonym for -std=c89 (for C) or -std=c++98

  • Martin York
    Martin York over 13 years
    What is the difference between TC1 and TR1?
  • sellibitze
    sellibitze over 13 years
    @Martin: TC1 was basically a bugfix of C++98 while TR1 was a report on possible library extensions. Two completely different things.