[Update: “C++11” is now the confirmed name — Geneva informs me that they plan to have it published in a matter of weeks, and then we’ll have ISO/IEC 14882:2011(E) Programming Languages — C++, Third Edition. The second edition was C++03, a Technical Corrigendum, or bug patch, that contained no new features. This is the first major revision with new features.]
The final ISO ballot on C++0x closed on Wednesday, and we just received the results: Unanimous approval.
The next revision of C++ that we’ve been calling “C++0x” is now an International Standard! Geneva will take several months to publish it, but we hope it will be published well within the year, and then we’ll be able to call it “C++11.”
I want to extend my thanks again to Bjarne Stroustrup for sharing his work with the world and continuing to help move it forward, and to all of the participants whose hard work went into achieving this important milestone in the history of a great language. Thanks!
156 thoughts on “We have an international standard: C++0x is unanimously approved”
Great work… But this language C++ is very very difficult to learn specially for a person who has not a tech background..
How time flies!
There are ways to get it for a reasonable price. For example, when the updated edition is published of http://search.barnesandnoble.com/The-C-Standard/British-Standards-Institute/p/9780470846742
Why in the world does it cost almost $500 to get an official copy of the standards document from ISO?!?!?!
I paid $18 for the C++98 document back in the day.
There has to be a better way to get the official document into the hands of individual developers who want to see that level of detail.
Awesome, I can’t wait for compilers to implement all the new goodies!
A good step forward – Next one is to standardize on a UI library and the world is ours (who needs HTML ;-)) – Seriously
Wohooo!! It’s cool, really cool!
C++ is the best language for scientific programming and engineering.
Thanks Stroustroup, Sutter and all other contributors to the ISO C + +.
Great, looking forward to be able to use a much more powerful and more complete language.
If it helps anyone looking for the correct pdf document, it is N3290, oddly one *less* than the last “working draft” (N3291), although it is, understandably, dated 6 days later (04/11/11 vs 04/05/11). I’m not going to retransmit it, because of the copyright notice, although I have legal/moral justification to study it myself, as I got it from the committee.
Since the document is written in “standardese”, it is work to read and comprehend the weight and implications of all the statements; the document is perfectly reticent in such matters. I can’t wait for Bjarne Stroustrup’s fourth edition to “the C++ Programming Language”, which will, no doubt, be an easier, pleasanter read (thanks in advance Dr. Stroustrup). In the mean while, to gain perspective, it’s helpful to look back at some of the prior committee papers advocating specific components to the standard.
I agree that the standard should be given away, just as the drafts were, to promote wider and earlier knowledge of it. Monetization should be done in some other way.
I don’t care what others call it: as for me and my code, it will be C++0xB!
For the 80% of code who’s speed is irrelevant, C++ is better than C. for the 19% who’s speed is important, you *may* have to forgo so much of C++ that you might as well use C. For the remaining <1% where speed is critical: hire someone who thinks C is for weenies to do it in ASM.
That’s the problem with Java and C# they standard library is huge! So no one actually knows to use it fully, let alone all the other frameworks that exist and that do the same thing in different terms (sometimes with only different classes and methods). In Java the first thing that you do for a project is which framework or frameworks should I use? Then, you end up with a lego based system, that while it does what it is wanted, it does it in a weak way, it has a lot of problems due to the integration of the various libraries, it has security problems because the libraries may assume something that the other does not provide and that the programmer overlooked and the list goes on.
So while in C++ you start by designing classes, in java you start by choosing components, while the later may seen better it is not, because of cross cutting concerns.
But java has two good things that many languages don’t have, Swing, the UI library and JDBC the database interface, the first because of the flexible layour managers, and the second because of the uniform and simple interface.
Actually one bad thing in C++, is that he standard library is starting to look a lot like java with a lot of things that programmers may not want, but that must be included in the programs (no one likes a multi-megabyte framework to be able to run a program with only a few kb, particularly when that program uses only a third of the framework or less). It would be much more interesting to exploit the power of dynamic libraries and separate the library in pieces that while developed as one, can be used in small pieces as the programmer needs it.
Since it was free for public consumption until the actual voting started, I am pretty sure anyone can find copies if they look around the net. This is a stupid rule that needs to go away.
Congratulations, great news for all C++ “lovers”!
Out of curiousity. I’d like to see you elaborate on that a bit. Especially the ‘created as a joke’ part.
It was expected to come out before 2010, hence C++0x. Now it looks like it’s coming out safely in 2011, it’s C++11.
We can, of course, pretend that C++0x was hexadecimal and we were never wrong =P
Aaah, ok? I am sure Herb got all of that.
Herb, what’s the story with the naming convention? How do you go from “C++0x” to “C++11?”
Anyway, congrats and about time too!
This is the point where ISO and the national standards organizations get to start charging for it – free copies will no longer be available.
I was luckily able to download the actual document that was voted on, before it was quickly pulled from public access. The document is identified as a “Draft International Standard”, unlike the “working drafts” that were liberally distributed earlier. This one has all the sloppy formatting, strikeouts, and editor’s notes cleaned up.
Since the document was unanimously approved, apparently as is, why does it take so many additional months to get “published.” What’s wrong with right now? I’ve got it; why can’t everyone get it? Why so secretive at this point?
A number of inconsistencies have already been found. Still, it’s a fabulous piece of work, with very few defects considering the length and complexity.
Well this ought to prove that something designed by a committee can be both brilliant and (hopefully) bugfree. Once the fireworks are over, maybe you will take a shot at a C++ 1x say with concepts?
really do not understand this =] looks like math combined with science and art =D
Did you mean to reply to Bruce (who obviously means that C++ is equally as fast as C and ASM, while being much faster to write), or Jan, who made the claim that C and ASM beat C++ speedwise? And none of them said C++ is slower that Java.
Why would be C++ slow? (and slower than java? are you serious?)
Great, I’ve been waiting and caring for two years, it’s really great.
After what happened with OOXML I don’t see any value in international standards anymore. It is all but a corrupted hypocrisy.
I wrote an Objective C++ smart pointer, as blogged here:
But I think ARC makes it pretty redundant now.
There’s still a lot to be gained by using C++ with iOS, though – keeping Obj-C to the GUI and other parts that need to interact with Cocoa-Touch
I’m sorry that it is too complicated for you. Stick to BASIC.
C++ works below that level. It is a very low-level language. If you want directory access, just use Boost. Sheesh!
If you want type lists or reflection, something I’ve never had any real use for, then use one of the slow, bloated memory-hog languages like Java or C#, and leave C++ to the people who know how to use it.
If you need fast code, and you are too dumb to learn C++, pick C (or ASM).
Fixed it for you.
I used to program in BLISS-32. It was an awesome language.
C++ is by no means “unsafe” in memory management. You can do things manually, you can use shared_ptr, you can use a garbage collector. C++ works below that level.
If you don’t feel comfortable using a low-level language, than stick with something slow that will fix all your mistakes for you.
As for syntax, you can start simple and move into the more complicated stuff when you are more experienced.
I’m sorry that C++ confuses you. Perhaps you might want to consider a profession other than programming. Or perhaps you should use a language that eats up tons of CPU time to check for things that you aren’t clever enough to catch yourself.
Objective-C++. Also, autorelease pools.
True. Unfortunately I’m rather impatient to use the new features so I have no intention of using VC++ until then :/
The released version of gcc is way ahead of the released version of MSVC. But that’s a function of VC2010’s infrequent release cycle. When VC2010 came out, it was roughly tied with gcc, and when VC.next comes out, it will most likely catch up.
And you know every bit of C’s, C#’s, or Java’s syntax? No, you don’t. But you still say they are great. You defeat your own argument.
Which means that I can use C++ on an embedded device which doesn’t have a filesystem or network.
Or I can use C++ and POSIX (maybe with a Boost wrapper) together and support virtuall all systems which do have network and/or filesystem.
Awesome! Been waiting for so so long!!!
Hi Herb, great job! Congrats and thanks a lot for all the work!
I have NEVER been a bureaucrat. So could you keep yourself from stating your opinions as facts? Do you know *anybody* from the committee in person? Or it just feels good to bash everyone like a 12 years old?
Doesn’t it make you feel all nostalgic to be in a world where MSVC hasn’t fully implemented the standard and your template libraries have to do “cleaver” compiler dependant MACRO_MAGIC to work around it?
glad to see it fully around in a few months.
Given what I remember of C++ variation among compilers in the pre 98 era, and the state after, the situation was actually somewhere between the two. Python has no international standard but is sufficiently specified so that the behavior of the various implementations targeting a particular version of the language are the same, except for things explicitly defined as implementation specific.
How funny that “fake” and bad in purpose programming language created as a joke to make it difficult to use, becomes a world standard!
Our world is really crooked…
Congratulations Herb and all your fellow volunteers. It must very gratifying to have *another* unanimous vote. I expect you are all very tired and look forward to a well-earned break.
But don’t wait too long!! :) We’d like the next rev to come a little sooner, and OBTW, TR2 till then would be nice…
I sure hope C++AMP will be in the next official specification in some form or other…it can truly transform the future if you can pull it off.
Again, BRAVO for your success and all the hard work.
LOL. Are you serious? C++11 will be easier to teach than *any* dialect of C or C++, and much of it will be as easy or easier than, say, a scripting language like Python. But wait, it is loses *none* of it’s efficiency, (in fact goes up by default – move semantics, r-value references) so it blows other languages out of the water where it really counts: PERFORMANCE.
It should be! ;)
That’s great news! So what are they going to be discussing at the Bloomington meeting next week?
GCC has much better support that MSVC right now
In fact that’s the reason I’ve recently swapped from Visual Studio to Code::Blocks and/or Qt Creator.
> Why would a beginner care that much about the details of a language’s syntax? What matters is how they use it.
To use language one must know its syntax. If it is complex, obscure and error-provokative (as in C++), it in turn provokes errors in programs written in that language.
To the contrary, nya slick languages like C, C# and Java do not provoke so much errors by their syntaxes or constructs.
Yes, C is unsafe in memory management – but C++ too! It’s just that C++ tells the newbie: “Hi! I’m unsafe language, but you can program safely on me – you just need to read about bunch of additional classes to do that. And please do not read all over 9000 previous books about me because they are wrong, but code in them will still compile and work – just don’t write in that style!”
Why would a beginner care that much about the details of a language’s syntax? What matters is how they use it. And C++0x-native code will be a lot more readable (and safer, with a lot fewer explicit deletes) than C++03 code.
Me myself uses C++ for more than 70% of my current large project.
But that (and your case also) doesn’t mean that we’re target audience – it just means that there’s nothing better than C++ for our project.
But it doesn’t contradict to that C++ is awful language with obscure syntax and standardization board full of bureaucrats. :)
> And what is target audience of C++ anyway?
I’m happily using it for a fast generic machine learning library. From my experience i must conclude that once you are forced to a maximum generic implementation with a minimum of mathematical assumptions and tight efficiency constraints, C++ is the language of choice.
That’s not a typical office application of course. and i hardly need file systems, directories or an ui at all. So i must assume, that i am part of the target audience. Oh and our source portability is great.
I’m C++ programmer for more than 7 years.
And yes, I’m happier with C# and Java, but only because they have become something that C++ only dreamed to become.
Bjarne Stroustrup designed C++ as practical, non-academic language that solves real progblems in simple way.
Instead, C++ become bloatware of undefined and complex syntax rules, which doesn’t have solution to most simple and practical problems of today (filesystem, reflection, dynamic libraries, mathematics, encodings, networking) – instead, it is managed by burocratic commettee of academics who need more than 10 years to incorporate simple threading into language standard library.
And what is target audience of C++ anyway? For low-level programming C++ is too obscure and unpredictable (that’s why Torvalds uses only C for Linux kernel and hates C++). For high-level programming and UI C++ doesn’t have binary (and even source level) portability and required features (garbage collector, etc).
Congrats, and thanks for your efforts.
if you need both, plus some high-level features and great things:
Use D language.
It’s a GREAT news for the C++ Community! Many Congrats for a new generation! :)
Congratulations and thank you for your tireless work to bring us a better C++!
You shouldn’t be let *anywhere* near English.
Seems to me, that you are not in the target audience of C++. Maybe you are happier with Java or C#?
I love the new standard :)
Excellent! I’m eager to put it in place. We can expect the compiler vendors to support it right away, right? :(
Congratulations! I’m looking forward to porting (upgrading :)) my codebase to the new standard.
if you need both pick C++
ignorance certainly is bliss ;)
It should be C++013 because octal numbers start with a 0.
It’s ridiculous that we have to wait more than ten years for thing that other languages had for ages and STILL don’t have filesystem and networking functions.
In second decade of 21st century C++ via its standard library STILL cannot create or remove directory. Or list types in library, or get class field by name.
All hail Herb and Bjarne and their comitee of burocrats!
Congrats ! We waited so long , and finally there it is !
if you need fast code pick C (or ASM)
if you need objects everywhere pick Java
Congratulations to C++.
Long time to wait the C++11 standard. Still waiting for the implementation of GCC
I think this means that Stroustrup’s The C++ Programming language will double in size by next year. I hope one day someone realizes that the language has become immensely huge with a convoluted syntax that is so time-consuming to understand for a beginner.
Congrats, great job, these are really cool new features I am already using in production :-)
people like you shouldn’t be let nowhere near a programming language.
Herb, do you know when TR2 will be worked on, is it even scheduled yet? I’m waiting for the word on ASIO in particular.
super!!!! great news for cpp developers!!!!!
Congratulations to all the standard committee for all the work.
I just can’t wait for our teams to upgrade their compilers (until then, I’m stuck with C++03)
The standardisation process was dragged out for so long that GCC and MSVC are somewhat conformant already.
I’m a C++ programmer and I welcome C++ making steps to catch up with the D language, which is much simpler and more intuitive to use.
Just wait for 10 years (:
Now, I’m wanting for the C++11 compliant compiler.
Thanks to Herb Sutter, Dr. Stroustrup and all the other volunteers for giving their hard work to create this new standard.
As a Microsoft developer for Visual Studio, do you know if the next Visual C++ version will have complete C++0x support? At the moment I’ve switched to GCC due to its plethora of supported features… ;)
Why isn’t it C++B? ;)
Wohooo!! Best news of the year!!
Wow! Great news indeed!!
“If I could use something like shared_ptr I wouldn’t have to worry about mismatched alloc/releases etc.”
Using C++’s scoping for managing ObjC object lifetimes is a glorious thing. See http://src.chromium.org/viewvc/chrome/trunk/src/base/memory/scoped_nsobject.h?view=markup for an example.
That’s a ridiculous claim. Just because there was no standard does not mean that it wasn’t a language. By that logic C wasn’t a language until 1989 (nevermind that people had been writing operating systems in it for a decade), and Python still isn’t a language.
Congratulations!!!!! Thanks for all the hard work, Herb et al :) Sweet.
I still want to see it get called C++0xB
Thanks for taking the time to keep us all informed.
[unsuccessful troll is unsuccessful]
This is good.
Now get to work on modules. I want to see that before 2015.
C++’s “inception” was C++98. Before that, there was no real C++; there was simply a bunch of informal compiler extensions to C. A lot of dialects all doing similar things, but no actual language.
So technically, C++11 is the only significant upgrade of C++ since its inception.
c++0x must be the most stupid language ever invented. It is ridiculous that nowadays you have to add all that c++0x overcomplicated crap in order to make apps safer.
Google Objective-C++. Seriously.
Well done, guys!
This might very well prove to be the most significant upgrade of C++ since its inception (ok STL was pretty big, but anyway).
Now, I someone could phone Apple about his, since I’m stuck here coding native apps for iOS using Objective-C. If I could use something like shared_ptr I wouldn’t have to worry about mismatched alloc/releases etc.
Whoo hoo. Let’s rock!
Congratulations on all that work.
Bravo. Now to get all our corporate coding standards to unanimosly accept as well!
Comments are closed.