Greetings! I’m Marc Gregoire, a Microsoft MVP VC++ since 2007, and I’m pleased to tell you that I’ve finished work on my book “Professional C++, Second Edition”.
This second edition includes the latest C++ standard, C++11, and is based on the great first edition written by Nicholas A. Solter, Scott J. Kleper. The book is published by Wiley/Wrox.
Here is the official description for the book:
Essential reading for experienced developers who are determined to master the latest release of C++
Although C++ is often the language of choice from game programming to major commercial software applications, it is also one of the most difficult to master. With this no-nonsense book, you will learn to conquer the latest release of C++. The author deciphers little-known features of C++, shares detailed code examples that you can then plug into your own code, and reveals the significant changes to C++ that accompany the latest release. You'll discover how to design and build applications that solve real-world problems and then implement the solution using the full capabilities of the language.
Appeals to experienced developers who are looking for a higher level of learning
Packed with best practices for programming, testing, and debugging applications, this book is vital for taking your C++ skills to the next level.
"This second edition includes the latest C++ standard, C++11"
Does this book talk about MS C++ 11 implementation into VC++ or it is about more on the Standard ISO/IEC c++11? I wanna know if it is more orientated on MS C++ implementation into VS/VC++ or mor about the language as standard..
The book describes all new features in the ISO/IEC C++11 standard.
Example code in the book also uses those new features.
Allmost all examples have been tested with GCC 4.6. Examples with C++11 features supported by VC++ 2010 have also been tested on VC++ 2010.
Out of the interest, how many of the examples in the book compile on VS2010 / VS2011?
Unfortunately, I don't know the exact numbers. The introduction to the book says:
"At the time of this writing, there were no compilers yet supporting all new C++11 features. GCC 4.6 running on Linux and Microsoft Visual C++ 2010 running on Windows were used for testing code samples. GCC 4.6 supports a lot of new features, but not yet all. Examples using the following C++11 features could not be tested with the version of GCC 4.6 that was available:
- The final and override keyword
- User defined literals
- In-class non-static data member initialization
- Template aliases
- Delegating constructors
- Inheriting constructors
The second compiler used for testing was Microsoft Visual C++ 2010, however, it supports less C++11 features than GCC 4.6. Notably missing from VC++ 2010 are range-based for loop, uniform initialization, variadic templates, and the threading library, among others."
Also, on www.wiley.com/.../productCd-0470932449,descCd-DOWNLOAD.html you can download Bonus Chapter 2, which shows a table with the two compilers used during testing and which features they support.
Does "includes the latest C++ standard, C++11" mean that literally, or does it merely mean that the book *covers* the new standard (no small feat, considering the short turnaround time). Actually, I'm highly skeptical of such a quick release -- to be published now in physical form, editing must have been done before ratification of the standard, so I'm thinking there were sacrifices made to accuracy in order to be first to market.
The book does not simply list all new features, but it does explain them, with examples and so on.
You are correct that the standard was only ratified not too long ago by the ISO, however, the FCD (Final Committee Draft) was finished on 2010-03-26, see this post from Herb Sutter ( herbsutter.com/.../c0x-fcd-launches-will-be-freely-available-online-in-about-a-week ), so that gives quite a few months of editing time. The FCD is the final draft. Between the FCD and the final ISO ratified standard there should be virtually no technical differences.
The Committee's terminology is confusing.
There were significant changes between the Final Committee Draft (N3092, March 2010) and the Final Draft International Standard (N3290, April 2011). The changes between the FCD and the FDIS, resulting from a year's worth of work by the Committee, are mostly of interest to compiler devs, library devs like me, and language lawyers.
For example, FCD 7.6.5 "Class member name checking attributes" [dcl.attr.override] provided the example "void f [[override]] (int);". This section and syntax were removed at the last minute. Now, FDIS 10.3 "Virtual functions" [class.virtual] provides the example "void f(int) override;".
The FDIS is the one that's equivalent (with editorial changes at most, semantic changes being outright prohibited) to the platinum-iridium International Standard.
This book sounds great!
Thank you Stephan, I don't know why I mentioned the FCD in my previous post.
What I wanted to say is about the FDIS. Like you said, the FDIS was released in April 2011.
So, that's still almost 5 months worth of time for editing and finalizing the book.
In short, the book has been edited based on the FDIS, which is virtually identical to the ISO standard.
Thank you, this is the book I was looking for!
What's change in this edition? Does it only update content for C++11 or also add new chapters?
It includes the C++11 changes. Examples have been updated to use C++11 features.
But there are also some new chapters, one of them is an introductory chapter on multithreading (using the C++11 threading library).
You can see the full table of contents here:
I was very excited about this book, since this is one of the first books to cover the new C++11 features.
However my excitement quickly dimmed as soon as I took a glance at the first chapter that is available online.
It seems that most of the information regarding C++03 is quite approximate and not exactly matching the C++ best practices. Therefore I wonder how well this book can cover C++11, where clear best practices are still not so clear.