As far as I know, the tags (1,048 questions) and (8 questions) on Stack Overflow refer to the newly finalized C++ standard that is expected to be published in summer 2011.

Should be the "real" tag and be a tag synonym, considering the question count and the fact that it's how the creator of the C++ language refers to the new standard?

  • 6
    [c++whenever] – Nick T May 4 '11 at 3:10
  • 1
    @Nick: you meant [c++forever] ;-) – fretje May 16 '11 at 16:17
  • 5
    @fretje: Duke Nukem Forever (due to be released this June) is a sequel to a '96 game, so C++98 to C++11 isn't quite as bad... ;) – Fred Nurk May 16 '11 at 16:51
  • 1
    @Fred - maybe, but does C++11 kick ass or chew bubblegum? – Steve314 May 16 '11 at 17:01

I think C++11 is preemptive; it isn't standard yet, after all. So until then, it should keep its colloquial name.

That said, we still have the question: When C++11 is official (or C++12 or whatever), should we change the tag, and if so, when? I think it's clear that the name should be changed eventually, so I'll omit that discussion, and focus on when.

I think even after it's been out for a long time, people will still refer to it as C++0x, especially people who don't keep particular close track of the language standard (most people). Therefore, I think it would be best left at C++0x for some time after the standard is released. When people stop tagging it as C++0x but instead as C++11, consistently, then we can change it to C++11.

Note, though, that you and I now both refer to the current standard, C++03, as just C++ (ignoring cases where we explicitly state the year, for emphatic reasons). We refer to the old standard by year, C++98, and the future one by codename, C++0x. In the future we'll refer to C++0x/C++11 as just C++, and the current standard, then old, as C++03.

What I mean to imply here is that when the time comes, we should not have a C++0x or C++11 tag at all for C++ questions, because that'll be implicit. Questions that need answering with only the support for the old standard will be tagged C++03.

The crux of the issue, then, is that these two things are going to happen at simultaneously: we'll start to see less usage of C++0x and more usage of C++11, while the explicit use of C++0x/C++11 will vanish anyway. How can we cope with both at once? I have no idea. I say wing it.

| improve this answer | |
  • I think just making "an official" tag and then setting "c++0x" to be a synonym will be sufficient. But is "c++0x" a valid synonym for "c++"? – jcolebrand May 4 '11 at 3:47
  • Also note the devs can mass replace any one tag with any other tag given sufficient motivation (which the adoption of C++0x can be given as such a sufficient motivation) – jcolebrand May 4 '11 at 3:48
  • @drach: I'm not sure I understand your question. And C++0x is a codename for the next standard, it shouldn't be a synonym for a standard language (C++0x will never refer to a standard, because once it's standard it's C++11). C++11 is C++, when it comes out, but C++03 (current C++) will still be so wide-spread that C++11 should still be made explicit, to differentiate. – GManNickG May 4 '11 at 3:49
  • @GMan that was my question. – jcolebrand May 4 '11 at 4:07
  • “C++0xB” would be more mnemonic anyway. – Donal Fellows May 4 '11 at 8:58
  • 5
    @GMan: Tangential comment on the eventual retagging of [c++11] to just [c++]. This may be tricky. It will probably be years after C++0x is ratified, published and publicly available before compilers conform to this Standard in a substantive way. It will either be confusing to newbies (not necessarily a bad thing) to see discussion of features their compiler doesn't support a question tagged [c++], or a very subjective judgement call to decide when to move [c++0x] to [c++] – John Dibling May 16 '11 at 15:14
  • @John: It's very likely to come out this year, I'm not sure why you think it'll be years. It will be years before every compiler supports all the features, and I'm simply suggesting that when that happens we might just tag them C++, and C++03 questions as such. I did say "wing it" for a reason though; I don't stand strongly behind any ideas in particular. :) – GManNickG May 16 '11 at 20:09

A agree that C++11 should be the "master" (and I take the blame for the screwup if that's not currently the case -- I'm the one who proposed the synonym, and if that's not how it ended up, I got things wrong).

I do not think that keeping the two tags separate serves any useful purpose. A tag is intended to give some general ideas about subject matter of a question, not to have such precision that it attempts to replace the question itself. The vast majority of questions tagged C++0x seem to apply equally well to C++11 and were clearly intended to refer to "the new language", not the standardization process.

| improve this answer | |
  • 1
    Technically we don't yet know that it's C++11. I would prefer to call it C++0x until it's truly done. – Kate Gregory May 24 '11 at 20:05
  • 2
    @Kate: actually we do. As I've pointed out elsewhere previously, the fact that final ratification might get held up will not change the date that's assigned. Just for example, the current draft of the Fortran standard was last modified November 2010, but when it does finally get ratified, it'll be Fortran 2008, because that's when it reached FDIS stage that C++ just achieved. I don't foresee C++ going another 3 years without ratification either though. – Jerry Coffin May 24 '11 at 22:21

IMO, C++0x will never be synonymous with C++11 or C++12, or C++13 (whichever it'll end up being)

C++0x includes questions about things that may one day be standard, or not (like concepts) but won't be in C++1{1,2,3}

C++0x is the project that leads up to C++1{1,2,3}, and artifacts of that project will (and should) continue to be called C++0x - like concepts. Once C++1x gets underway, and concepts come back onto the table, there'll be C++0x concepts and C++1x concepts. Hopefully, the C++1x concepts will be better to the point that we'll stop talking about C++0x concepts, but that doesn't make them C++1{1,2,3} concepts (which don't exist)

| improve this answer | |
  • 3
    '13, my, aren't we the optimist. – Nick T May 16 '11 at 16:51
  • 1
    +1 - Old questions that remain relevant can always be manually retagged, as and when they're spotted. – Steve314 May 16 '11 at 16:56
  • 1
    @Ronald @Nick I thought it was common knowledge, now, that C++0x is very likely to be C++11. They already passed the final draft. – GManNickG May 16 '11 at 20:10
  • 2
    @GMan my point is that some (many?) of the things that were discussed and developed for C++0x won't be in C++11 -- and we may well continue to discuss them and refer to them, which we would do as C++0x, not C++11 – Ronald Landheer-Cieslak May 17 '11 at 14:40
  • 1
    @Ronald: true, but they were discussed during the standardization of C++11, so I think tagging them as C++11 would be fine. C++11 is (going to be) a formal name for C++0x and all that it stands for. Questions about concepts are currently tagged C++0x, and I see no problem in (eventually) retagging them C++11. In the same way, if I had a question about something related to the evolution of C++98 (say, why don't we have a copy_if), I think it would be intuitive to tag it C++98, and not, say, "pre-ISO-C++" or some other "not C++98, but related to its development" tag. – jalf May 23 '11 at 10:21
  • 2
    I think C++11 and C++0x are going to be/should simply be synonyms. Trying to enforce some kind of separation is only going to lead to confusion in the long term. – jalf May 23 '11 at 10:22

This is the strongest argument I see from either side, and it supports creating a tag synonym:

Trying to enforce some kind of separation [between [c++11] and [c++0x] tags] is only going to lead to confusion in the long term.
  — jalf

All of the current 35 [c++11] questions are also tagged [c++0x] (except one which was migrated). This tells me we currently use it as a synonym, anyway.

However, wait until the 2011 standard is actually published. No one (I've read or talked to) knows of any reason ratification and publication would be held up, but it hasn't happened yet.

Because "C++11" will be the official name once the standard is published (echoing jalf's previous comment), [c++11] should be the "master" tag. Synonyming the tag, editing the C++11 tag wiki, and retagging (by a moderator) would even be a nice, subtle way of announcing the publication to SO's C++ audience.

Stroustrup continues to use "C++0x" because he has been using that for several years and there is no official name yet. I expect he will switch names once there is one.

| improve this answer | |
  • No, the official name is "ISO/IEC 14882:2011". C++0x sees much more widespread use than C++11, and is used by Stroustrup, suggesting that it's the accepted abbreviation and thus the better master. – Ben Voigt Sep 16 '11 at 15:20

Not the answer you're looking for? Browse other questions tagged .