At the Rapperswil C++ Standard meeting, we are here to answer the National Body comments from our recently issued Final Committee Draft.
There were a large number of comments, not a great deal more then the number of comments from the last CD in 2009. Almost all the National Bodies supported the FCD which is document n3102.pdf when it is released, most with comments. One NB voted no with comment, on the believe this will motivate fixing the comment in the manner that they approve, and then voting yes with or without comments in subsequent ballots, pending the actions taken.
This meeting triaged all the National Body Comments submitted for the FCD.
There were by Country the following number of comments.
- Japan 110
- Great Britain 142
- Finland 19
- US 208
- Switzerland 36
- Germany 23
- Canada 24
There were 538 comments in total.
Canada submitted 24 comments on the Canadian ballot in addition to 15 comments on the US NB ballot for a total of 39.
US 12, 14, 142, 145, 159, came from Canada (IBM) and were submitted separately before the Canadian Comments because the US deadline is earlier.
US 37, 44, 47, 85, 77, 92, 97, 102, 105, 109 came from Microsoft but were submitted by Canada on their behalf. There were not resubmitted again, but merely submitted as an omnibus comment to indicate that Canada agrees with them.
There were a few comments asking specifically that all features that have no implementation experience be removed from the FCD. The core group considered it and decided that only features relating to immediate 0x library implementation need to be considered with a deadline. Of these only the following were implemented:
* Generalized constant expressions (constexpr): gcc
* Unrestricted unions: gcc
* alias templates: EDG
* explicit conversion operator functions: gcc 4.5
* Delegating constructors: IBM
* Raw strings: gcc 4.5
* noexcept: gcc 4.6
* Implicitly-defined move constructors/assignment operator functions: gcc
* Non-static data member initializers: fairly similar feature in Microsoft C++/CLI
The features that remain unimplemented are:
* Move semantics for *this
* Inheriting constructors
* User-defined literals
Of the remaining unimplemented features, nothing can be stated about what will be done in the future.
There were a large number of motions approved , but they were mostly minor and frankly not surprising that they passed smoothly unlike almost any meeting I have been to in the past.
This is both a good and bad sign. It is good in that we should not have any major controversy at this point in the ratification. However, knowing how issues were triaged this week, most of the more controversial issues were actively worked on, but not moved for voting.
This could be bad in that we could have all the controversy saved for the next meeting. I am not saying this is what will happen in the next meeting which will be Nov 8-13 in Batavia (near Chicago).
But it does set us up for that.
The major issue for this meeting could have been the controversy with noexcept. There was a promise from the last meeting to revisit the issue based on a National Body comment. There was a Swiss comment for this. It was resolved in Core to reject the comment as not a defect. This effectively ends the discussion until someone starts it again.
We will see in the next meeting how some of these potential time bombs will behave.