18

At the moment it's unclear from a question posted and tagged with just if the question is seeking to solicit answers from a C++11 perspective or not. There are plenty of people who say yes (my compiler has reasonable support already) and plenty of people who say no (my compiler barely supports C++98 still!).

Prior to the acceptance of the final draft of C++11 the status was very clear, almost all questions were explicitly about a new C++11 feature and thus got tagged as such.

Now though we're starting to see questions tagged solely , where a solution would be far simpler/cleaner and acceptable to the OP.

Asking "are you interested in C++11 solutions?" on each and every question is rapidly becoming tedious and noisy.

At what point did imply C++11?

Can we take any actions to make the default situation clearer in the transitional period?

2
  • @kiamlaluno - I'm not quite sure I like that edit, it sort of presupposes an answer that I didn't particuarly want to presuppose. Would "should" instead of "did" in both those places work for you? That could be read as either of past/future depending upon what people feel.
    – Flexo
    Nov 18, 2011 at 1:11
  • 1
    When? On 1 September 2011, with the publication of C++11 as the current version of C++.
    – Mankarse
    May 25, 2012 at 20:35

3 Answers 3

10

Tags help answerers find new questions, and help askers find old questions. Most of us who can answer C++11 questions are already watching plain , and in the long run, will be merged to for the askers (or simply fade into irrelevance).

How can we know to avoid C++11 in answers? Maybe there's no way, but it increases the long-term value of an answer, so it's always worth including if helpful. Even on platforms with C++11 support, most people don't have it turned on yet, so answers requiring it are likely to be unhelpful at the moment.

Submitting a non-accepted answer isn't the worst thing, and nobody is getting downvoted for using unsolicited C++11. So I'm not worrying about it. Just answer both ways, or answer one way and mention the other solution (which often is already in another answer).

1
  • 2
    I liked "it increases the long-term value of an answer" - I'd not really put the two things together quite so neatly
    – Flexo
    Nov 17, 2011 at 19:01
20

I'd say now.

means "any public version of c++ that still works". Now that C++11 is out, it should count. To treat C++11 as a whole other language, and only answer with C++11 when specifically asked for it, does nothing for advancement of the language. (Although a note that the answer is C++11-specific would be good. Even better would be to include code for older versions, but simply saying "this won't work if your compiler sucks" would be sufficient in most cases.)

Consider the .net tags (, ) as an example. There are tags for each specific version, and an overall tag that means "whatever version works". I'd highly recommend a similar structure for the C++ tags. In fact, i've already made a tag for a question that was specifically about C++98.

10
  • 3
    Running for Taxonomist, are we? ;) Nov 17, 2011 at 18:47
  • Just trying to keep things sensible. :)
    – cHao
    Nov 17, 2011 at 18:48
  • So how do you encourage others who are only interested in pre-C++11 features to make that explicit in their tagging?
    – Flexo
    Nov 17, 2011 at 18:49
  • 6
    Regarding c#, I always assume the current version unless specified otherwise (and I'm not alone on this). Though when I do, I try to mention that it is a snippet that requires a certain version if it matters. I usually We should be able to do the same here. Anyone interested in a specific, non-c++11 solution should request and tag as such. Nov 17, 2011 at 18:50
  • 1
    C++98 is more widely known as C++03, since the latter consisted of corrections and tighter requirements. Probably c++98 should alias c++03. Nov 17, 2011 at 18:51
  • 4
    @awoodland: If they want a specific version of C++, let them know to add tags specific to that version. Same as they do in the .net tags. Or, if it becomes obvious someone's looking for old code, then the question should be retagged by someone who can do that.
    – cHao
    Nov 17, 2011 at 18:52
  • Why does the dialect have to be tagged? Questions should already include platform and toolchain information, which is sufficient to know not only whether C++11 features are usable, but which C++11 features are implemented. Tags don't provide that. And I don't really see a need to cater to experts interested solely in a particular dialect. The whole c++ vs c++0x made sense because that latter applied to standardization discussions, which are substantially different from coding questions. But the standardization process is complete now.
    – Ben Voigt
    May 25, 2012 at 15:00
  • 1
    @Ben: It doesn't have to be tagged, but if it's not, then anything goes. I shouldn't be expected to know or google what version of the standard SchmoeC++ v179.25 claims to support, or how complete its support is. And i'm not answering in terms of SchmoeC++ anyway; i'm answering in terms of C++. Unless the question is specifically tagged with a certain compiler, i don't care about SchmoeC++'s quirks.
    – cHao
    May 25, 2012 at 15:07
  • @cHao: If the poster mentions he's using gcc 4.5.2 with Ubuntu on a MIPS processor, you can still give answers involving C++11 features not available until gcc 4.7, but they'll be less helpful than an answer that works in the OP's environment, and voted accordingly. The right answer is determined by the question text, not by the tags.
    – Ben Voigt
    May 25, 2012 at 15:12
  • @Ben: As well they should be. But the asker isn't the only one that'll ever read the question. And unless the question specifically mentions some lack of support or is tagged with an old version of C++, i get to assume your compiler doesn't suck. :) Like i said, i shouldn't be expected to go searching out what features your particular compiler does or doesn't support, unless it's related to the problem you're having.
    – cHao
    May 25, 2012 at 15:17
6

The point when C++ fully implies C++11 is when compilers make C++11 the default behavior. Hopefully this will come soon.

Currently, I've found the best way to answer questions tagged with C++ is to answer them using C++03, while seeing C++11 as an extension. This is similar to how you might give a solution using a library - if the solution can be done almost as easily without it then use C++03, otherwise use C++11 and explain that you are doing so.

Asking "are you interested in C++11 solutions?" on each and every question is rapidly becoming tedious and noisy.

If it's tagged explicitly with then don't write a C++11 solution, otherwise feel free to. C++11 solutions might not be useful to the original poster but will be to future visitors.

1
  • I think information about the toolchain, since every question should include that anyway, is a much better approach for requesting a pre-C++11 answer than new tags.
    – Ben Voigt
    May 25, 2012 at 14:58

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