22

According to the ISO Web Site the new standard is named "ISO/IEC 14882:2015" rather than "ISO/IEC 14882:2014". Why is that so and will that change? There are alreadly lots of things tagged C++14, for example.

In case you are interested in the technical content rather than the standard's document, it is available from github from the ISO C++ Repository as N4140.

rene
  • 41,474
  • 78
  • 114
  • 152
Dietmar Kühl
  • 150,225
  • 13
  • 225
  • 380
  • In the abstract it's called "ISO/IEC 14882:2014", one of these must be a typo. – Anton Savin Jan 15 '15 at 12:17
  • The standard was ratified in 2014, but it wasn't *published* then. Or was it? – Some programmer dude Jan 15 '15 at 12:18
  • @JoachimPileborg .. I'm fairly sure that doesn't make a difference, or does it? – Columbo Jan 15 '15 at 12:18
  • 2
    Anyway `__cplusplus` is defined to `201402L` (at least I hope it will be so in the official standard), so we can continue to call it C++14... – Anton Savin Jan 15 '15 at 12:21
  • Admittedly, the oddity of the name provided an opportunity to create a question implicitly indicating that C++15 (or C++15) is released! :-) – Dietmar Kühl Jan 15 '15 at 12:22
  • 3
    Committee approved it in 2014, it was published in 2015 – SGrebenkin Jan 15 '15 at 12:25
  • 2
    @BЈовић: well, if the standard name is "...2015" surely the revision will be referred to as "C++15". That's similar to C89 and C90. – Dietmar Kühl Jan 15 '15 at 12:43
  • 1
    @DietmarKühl Wait, that's the same thing? Always confused me – Columbo Jan 15 '15 at 12:45
  • Here you can find http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2fISO%2fIEC+14882-2012, previous version which is also named 2011 and 2012. I wonder if they will keep 60$ price – marcinj Jan 15 '15 at 13:00
  • 1
    @Columbo: you mean C89 and C90? Yes, it is the same standard, also just affected by the publication date. See e.g. [wikipedia](http://en.m.wikipedia.org/wiki/ANSI_C). – Dietmar Kühl Jan 15 '15 at 13:02
  • Do you know whether [N4296](https://github.com/cplusplus/draft/blob/master/papers/n4296.pdf) is still C++14, or whether it includes C++1z bits? – Angew is no longer proud of SO Jan 15 '15 at 13:05
  • Also according to that text, C++14 is "based on the C programming language as described in ISO/IEC 9899:1999." News to me. – Potatoswatter Jan 15 '15 at 13:08
  • @marcinj: there is work being done to get ANSI to offer C++14 at a reasonable price (target: $30). That will take a while and there is no guarantee it will work. – Dietmar Kühl Jan 15 '15 at 13:14
  • @Angew: N4140 is the version matching C++14 (the official document is N4141 - easy to remember as 14 backwards). – Dietmar Kühl Jan 15 '15 at 13:16
  • 1
    If you check the link again, the typo has been corrected and it now reads 2014 – Rastaban Jan 29 '15 at 21:43
  • C90 has different section numbering to C89 – M.M Jan 29 '15 at 23:57
  • @Potatoswatter: It's true. C++03 was based on C90, for example. C++14 is based on C99. It's just a way of saying that the "underlying" C standard has also been updated and that newer C++ refers to the update. – Lightness Races in Orbit Aug 06 '15 at 11:47
  • @LightnessRacesinOrbit If you follow the link, ISO summarizes the C++ language by saying "C++ is a general purpose programming language based on the C programming language as described in ISO/IEC 9899:1999 *Programming languages : C*…" which is very misleading. C++ is based on AT&T C from the mid-80's, not C99. C++14 certainly isn't a superset of C99; C99 features such as VLAs and `restrict` are not present and there are dozens of little incompatibilities due to their divergence long ago. – Potatoswatter Aug 06 '15 at 15:48
  • @Potatoswatter: Except, **by definition**, per the text you just quoted, C++14 is based on C99. Older incarnations of C++ may have been based on mid-80s AT&T C, but C++98 was based on C89, C++11 was based on C99, and C++14 is based on C99. It's an irrefutable fact. Perhaps you're confusing "is based on" with "is a superset of"? The former does not mean the latter. – Lightness Races in Orbit Aug 06 '15 at 15:51
  • @LightnessRacesinOrbit Is there a `lang rebase` command I don't know about? ISO's commentary is not normative. There is [intro.refs] §1.2 but that's not what the synopsis there is talking about. It's an irrefutable fact that C++14 is not a superset of any edition of ISO C. – Potatoswatter Aug 06 '15 at 15:53
  • @Potatoswatter: And nobody is claiming that it is. That all being said, don't worry: [it's not just you](http://stackoverflow.com/q/8593643/560648). :) – Lightness Races in Orbit Aug 06 '15 at 15:54
  • @LightnessRacesinOrbit ISO is strongly suggesting that it is, if you follow the link and actually read what it says there. Anyway, this discussion is a bit silly because nobody should read that synopsis as their introduction to C++ anyway. – Potatoswatter Aug 06 '15 at 15:56
  • @Potatoswatter: Think of it this way. You and I are based on monkeys. Doesn't mean we _must_ have hair all over. (And please tone it down; you're coming across somewhat accusatory all of a sudden with your "actually read" etc! Did you not spot that what it "actually" says there was written by, um, _me_?) – Lightness Races in Orbit Aug 06 '15 at 15:56
  • @LightnessRacesinOrbit We are based on monkeys, not orangutans. Saying C++14 is based on C99 is like saying homo sapiens are based on orangutans. They're different, contemporary branches. Sorry for any disturbance, it's my bedtime. Nites! – Potatoswatter Aug 06 '15 at 15:57
  • @Potatoswatter: The truth is you are at odds with the official ISO definition of the language and, like, everyone else :P If you have your own definition of "based on" then that's fine but doesn't mean ISO or anyone else has to share it. – Lightness Races in Orbit Aug 06 '15 at 15:58

1 Answers1

26

Update: The title has been adjusted and now reads ...:2014


<joke> Obviously the postfix-increment finally showed its side-effect </joke>

I suppose the person responsible for publishing this article must have made a typo, as every other source mentioning it uses ISO/IEC 14882:2014, and so does the text that follows the title:

ISO/IEC 14882:2014 specifies requirements for implementations of the C++ programming language.

Also consider this passage from "We have C++14!":

We will perform some final editorial tweaks, on the order of fixing a few spelling typos and accidentally dropped words, and then transmit the document to ISO for publication this year as the brand new International Standard ISO/IEC 14882:2014(E) Programming Language C++, a.k.a. C++14.

C++14 was ratified in 2014, hence the name. However, if the publication did only happen this January - i.e. in 2015 - then there is a chance that this is more than just a typo. Then the name ISO/IEC 14882:2014 was mentioned solely in anticipation of the publishing still happening in 2014.
According to Wikipedia,

These are designated using the format ISO[/IEC] [/ASTM] [IS] nnnnn[-p]:[yyyy] Title, where nnnnn is the number of the standard, p is an optional part number, yyyy is the year published, and Title describes the subject.

Though even if the official name of the standard document will indeed be corrected to 2015 as the publishing year, we would still call it C++14 as the final document was basically established last year (and also because introducing "C++15" at this point would cause a lot of irritation, as with ISO C89/C90).

Community
  • 1
  • 1
Columbo
  • 60,038
  • 8
  • 155
  • 203
  • The isocpp post (or somewhere else) mentions that it should be 2014 in the title. – Xeo Jan 15 '15 at 17:00
  • 5
    Stefanus du Toit (C++14 editor) at least believes it's an error on the ISO page: ["C++14 is officially published! http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=64029 … (and yes, the ":2015" should read ":2014")"](https://twitter.com/stefanusdutoit/status/555430491948457984). – Casey Jan 15 '15 at 18:02
  • 2
    If you check the link again, the typo has been corrected and it now reads 2014 – Rastaban Jan 29 '15 at 21:42