The View (or trip report) from the Mar 2009 C++ Standard meeting
Michael_Wong 120000M1EH Comments (2) Visits (8010)
Hi, all. I apologize for the lack of updates as an addition to the family has kept me hopping. But just as important is where is the C++ Standard, so here is the long delayed trip report.
The C++ Meeting in Summit, NJ on Mar 1-6 was the first meeting we had after the draft release for public comment of the C++ 0x Standard. In this meeting, we addressed the various National Body comments based on the draft that was released in the September San Francisco meeting.
A list of the National Body Comments can be found here:
Out of these National Body Comments, there were:
As a rough count, there are :
That is a lot of features and a lot of defects. Not all the defects will be in every compiler, because some defects are just textual changes. Almost every compiler I know of will be doing a phased released approach, delivering all these across multiple releases.
One unnamed compiler vendor I spoke to at the recent BoostCon09 joked that it may not be all delivered until 2020. I didn't think he was joking, on reflection.
While I am on BoostCon09, I did a 90 minute talk on the Overview of C++0x and compiler support. The external trip report for that talk can be referenced here:
My trip report is here:
The video of the talk will be online soon.
From my point of view, the other significant thing that happened was a total rewrite of the section on lambdas. The CD1 version of lambda, a significant feature had no examples at all, and did not deal with many, many edge cases (such as how are arrays passed). This section and its design was discussed carefully and a new section will appear in the next draft, which will address many of these problems.
Another interesting discussion is the intent to deprecate various potentially unused C++ entities. These include the meaning of the register keyword, and trigraphs.
On the register keyword, the intent is to deprecate the meaning of the keyword, which used to be that variables qualified as register may be allocated to a register, at the discretion of the compiler. With today's sophisticated register allocator, this advice is rarely taken anyway, and the compiler often would make independent decision based on an abstract machine with a register file that is far greater then what is normally present.
The deprecation of this meaning is welcomed. The keyword will remain for use by for some future meaning.
On the deprecation of trigraphs, the thought process is that there is concern about the confusion when trigraphs are used in quotes with normal usages of question marks, since trigraphs often start with multiple question marks. This one is more problematic from my point of view as it is not clear how their use will be substitutable on international keyboards where such code pages are not present or is represented differently. It does not seem digraphs will replace all the pieces. I will describe more on this in a future post.
The latest draft as of May 25, 2009 is:
You can get a really good idea of what is in the 0x CD1, that is different from the C++98/03 draft in this excellent document by Alisdair Meredith. I have not reviewed it for completeness, but it is a great resource:
Bye for now, and I will post again real soon.