On 08/14/2014 07:37 PM, Nelson, Clark
I apologize for sending this so late but I thought I had lost some
notes regarding C++98 and C++11.
I have made a few minor revisions since N4030.
The redlining in the document is relative to the published SD-6; I think
that's the way we'll want to publish it. But here is what I've changed
In response to Ed Smith-Rowland's question about <optional> vs.
<experimental/optional> I updated the __has_include example. Of course it's
just an example, but I think it's more helpful now than it was.
In response to Walter's question about the "policy" for the C++14 table, I
minimally tweaked the text. :-)
In response to Richard's question/complaint, I deleted "has" from the macro
names for new features added by LWG issues.
There are sentences in the rationale section about features removed from
C++14 to a TS; I have changed them from editorial notes to plain old text.
(I don't know what's going to happen with the array extension TS, but it is
still an official project with an official number; hopefully something will
come of it.)
This still needs work in three areas:
1. We need introductory text and rationale for __has_cpp_attribute.
2. We need to approve what we want to do about the LWG issues that Alisdair
3. We need to make final determinations about shared_mutex.
Clark Nelson Vice chair, PL22.16 (ANSI C++ standard committee)
Intel Corporation Chair, SG10 (C++ SG for feature-testing)
email@example.com Chair, CPLEX (C SG for parallel language extensions)
Features mailing list
I collected some thoughts on "finishing" these areas if that is
Here are some macros to finish-out C++11:
N2439 __cpp_reference_qualifiers 200710 This has library
N2756 __cpp_nsdmi 200809 Hate to spell this out :-(
__cpp_aggregate_default_initializers Or this, borrowed
N1986 __cpp_delegating_constructors 200604 Users can
migrate from initializer functions
N2540 __cpp_inheriting_constructors 200802 Ditto
N2930 __cpp_range_based_for_loops 200907
N2672 __cpp_initializer_lists 200806
Some popular C++ compilers still don't support all these.
It doeas add a few more macros but it finishes C++11.
Other compilers may emerge that need to "work their way up" through
I could go either way on this - I know some don't want to clutter up
compilers with lots of macros.
Rationale for __cpp_exceptions and __cpp_run_time_type_id:
Several compilers exist that allow the user to turn these features
off with a macro or a compiler switch.
Providing these macros enhance portability of such code that uses
macros to change code depending on availability of these features.
I just used the date standard when these were added to C++98 rather
than try to dig up old papers.