Title
Additional differences between C++ 2003 and C++ 2011
Status
drafting
Section
C.6 [diff.cpp03]
Submitter
Nikolay Ivchenkov

Created on 2011-03-27.00:00:00 last changed 156 months ago

Messages

Date: 2012-01-15.00:00:00

Additional note (January, 2012):

In addition to the items previously mentioned, access declarations were removed from C++11 but are not mentioned in C.6 [diff.cpp03].

Proposed (partial) resolution (February, 2012):

Add the following as a new section in C.6 [diff.cpp03]:

C.2.5 11.8 [class.access]: member access control pdiff.cpp03.class.access

Change: Remove access declarations.

Rationale: Removal of feature deprecated since C++ 1998.

Effect on original feature: Valid C++ 2003 code that uses access declarations is ill-formed in this International Standard. Instead, using-declarations (9.9 [namespace.udecl]) can be used.

Date: 2012-09-24.00:00:00

A number of differences between C++03 and C++11 were omitted from C.6 [diff.cpp03]:

  • New keywords. Although these are said in C.6.2 [diff.cpp03.lex] only to invalidate C++03 code, they can also change the meaning, e.g., thread_local x(y), which would declare a variable thread_local initialized with y in C++03 and a thread-local variable y in C++11.

  • New deduction rules.

  • Removal of the deprecated string literal conversion.

  • When a friend function defined in a class template is actually defined (i.e., with each instantiation or only when odr-used).

  • Removal of access declarations.

  • Use of the injected-class-name of a class template as a template template-argument.

History
Date User Action Args
2012-02-27 00:00:00adminsetmessages: + msg3775
2011-03-27 00:00:00admincreate