6

I am aware the standard was ratified in 1998, and an update to repair some defects in the standard took place in 2003 (the ISO standards) although I am unsure of the relation of C++98 and the ANSI C standards.

I remember more than once reading the C++ 1998 standard was based on one of the C standards, I would assume ANSI C89 and not 99, is this correct?

Also would I be correct to assume C++0x is the official alias of the next "to be" standard, and C++03..11..xx are just certain "updates" working towards the C++0x standard, C++11 just being the update that happened to take place in '11?

For the life of me I cannot find too much on this online, searching what was based on what and "list of C++ standards and what they introduce" for example comes up with nearly nothing, unless I just need a fresh mind to find anything else.

Thank you.

Zero Piraeus
  • 56,143
  • 27
  • 150
  • 160
Den R.
  • 135
  • 6
  • I think it's not really worth thinking of C++98 as being "based on" C90. It refers to it, especially when defining library functions, and where C++ is designed to preserve a *certain* degree of compatibility with C, yes, it's with C89. But thinking of C++ as being an actual *extension* of C just leads to errors. IMO you should take C++ as it is - a complete language definition, which refers to another standard for some details. – Steve Jessop Jun 24 '11 at 11:53
  • possible duplicate of [Relationship between C and C++](http://stackoverflow.com/questions/4388606/relationship-between-c-and-c) – Armen Tsirunyan Jun 24 '11 at 12:47

2 Answers2

4

Yes, C++98 is aligned with C89. Same with C++03, which is the current official standard, but so close to C++98 that many people call it an update to that older standard.

The upcoming C++ standard is now codenamed C++0x, but will become C++11 if ISO manages to get it approved this year. It's a major upgrade of C++03 and will align C++ with the C99 standard to some extent (mostly in terms of the library features introduced in C99).

Fred Foo
  • 355,277
  • 75
  • 744
  • 836
4

Have you tried the Wikipedia article?

There are only two C++ ISO standards to date, C++98 and C++03. Everything beyond that is not yet finalized and collectively referred to as "C++0x". It is expected to become a standard in 2011 or 2012, which is why some people already call it "C++11", but that's premature.

There are also two ISO C standards, C90 and C99. C90 is essentially equivalent to ANSI C89.

Kerrek SB
  • 464,522
  • 92
  • 875
  • 1,084
  • I'm using C++11 because I've got a time machine and I will have seen it :P Now seriously, even if it is approved in 2012 it will be C++11. – R. Martinho Fernandes Jun 24 '11 at 09:38
  • See also [when-will-c0x-be-finished](http://stackoverflow.com/questions/5436139/when-will-c0x-be-finished) – Bo Persson Jun 24 '11 at 09:42
  • @Martinho: Is that assuming there won't be any more changes to the final draft? I mean, what if a flaw _was_ found and a new draft had to be made? Would the final date be that of the latest draft? – Kerrek SB Jun 24 '11 at 09:45
  • @Kerrek - No, all the "bug reports" have been fixed by now, and the current document is *final*. The only option is for the ISO members countries to vote no and reject the proposal. Highly unlikely, as the major countries are also members of the committee that already approved the proposal. – Bo Persson Jun 24 '11 at 09:53
  • @They have been fixing bugs in the standard since 2006 (no new stuff since then). Lets hope they have finished. – Martin York Jun 24 '11 at 14:42
  • @Yeah, I'm fairly confident too that it'll be C++11 in the end, but after waiting so long I'm happy to keep saying "C++0x" until it's really all done and ratified. Keep in mind that there is no fully conforming implementation of it yet; so I'd like to wait until that's the case. – Kerrek SB Jun 24 '11 at 14:44