Doc. no. N4102
Date: 2014-07-01
Project: Programming Language C++
Reply to: Ville Voutilainen <[email protected]>

C++ Standard Evolution Completed Issues List (Revision R08)

Revised 2014-07-01 at 21:07:12 UTC

Reference ISO/IEC IS 14882:2003(E)

Also see:

This document contains only evolution issues which have been closed by the Evolution Working Group (EWG) after being found to be acceptable extensions to the standard. That is, issues which have a status of DR, TC1, WP, C++11, or Resolved. See the Evolution Closed Issues List for issues closed as non-defects. See the Evolution Active Issues List for active issues and more information. The introductory material in that document also applies to this document.

Revision History

Completed Issues


1. N3638, N3582, N3386 Return type deduction for normal functions

Section: 7.1.6.4 [dcl.spec.auto] Status: WP Submitter: Jason Merrill Opened: 2012-03-27 Last modified: 2014-06-13

View all other issues in [dcl.spec.auto].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3582.html

Reviewed by EWG in Portland 2012, proceeding to CWG.

Accepted into the Working Draft in Bristol 2013, as N3638.

Wording available:

The paper contains the proposed wording.


3. N3760, N3394 [[deprecated]] attribute

Section: 7.6 [dcl.attr] Status: WP Submitter: Alberto Ganesh Barbati Opened: 2012-06-12 Last modified: 2014-06-13

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3394.html

Reviewed by EWG in Portland 2012, proceeding to CWG.

Adopted in Chicago 2013

Wording available:

The paper contains the proposed wording.


6. N3667, N3401 Generating move operations (elaborating on Core 1402)

Section: 12.8 [class.copy] Status: WP Submitter: Ville Voutilainen Opened: 2012-09-21 Last modified: 2014-06-13

View all other issues in [class.copy].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3401.html

Reviewed by EWG in Portland 2012, proceeding to CWG.

Accepted into the Working Draft in Bristol 2013, as N3667.

Wording available:

The related Core issue contains the proposed wording.


7. N3642, N3468, N3402 User-defined Literals for Standard Library Types, N3472 Binary Literals in the C++ Core Language

Section: 2.14.2 [lex.icon] Status: WP Submitter: Peter Sommerlad Opened: 2012-09-08 Last modified: 2014-06-13

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3402.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3468.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3472.pdf

Reviewed by EWG in Portland 2012, binary literals to be added into the core language, the rest of the paper is on LWG's plate. The binary literals are proceeding to CWG.

Accepted into the Working Draft in Bristol 2013, as N3642.

N3472 also accepted into the Working Draft in Bristol 2013.

Wording available:

The paper contains the Library wording, Dennett has written the Core wording (N3472) for binary literals.


8. N3492, N3403 Use Cases for Compile-Time Reflection

Section: 18 [language.support] Status: Resolved Submitter: Mike Spertus Opened: 2012-09-22 Last modified: 2014-07-02

View all issues with Resolved status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3403.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3492.pdf

Not reviewed by EWG yet, to be handled by the Reflection Study Group (SG7).


13. N3639, N3497, N3467, N3412 Runtime-sized arrays with automatic storage duration

Section: 3.9 [basic.types] Status: WP Submitter: Jens Maurer Opened: 2012-09-19 Last modified: 2014-06-13

View all other issues in [basic.types].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3412.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3467.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3497.html

Reviewed by EWG in Portland 2012, proceeding to CWG. The library part is N2648 C++ Dynamic Arrays, and that part is proceeding to LWG.

Accepted into the Working Draft in Bristol 2013, as N3639.

Wording available:

The paper contains the proposed wording, as does the Library counterpart.

16. N3649, N3560, N3559, N3418 Proposal for Generic (Polymorphic) Lambda Expressions

Section: 5.1.2 [expr.prim.lambda] Status: WP Submitter: Faisal Vali Opened: 2012-09-21 Last modified: 2014-06-13

View all other issues in [expr.prim.lambda].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3418.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3559.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3560.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3649.html

Reviewed by EWG in Portland 2012, proceeding with a follow-up paper.

Accepted into the Working Draft in Bristol 2013, as N3649.

Bristol 2013: Do not re-open proposals 2.1 and 2.2 in N3560, they are considered NAD. The proposals 2.3 and 2.4 are covered by N3649.


18. N3424 Lambda Correctness and Usability Issues

Section: 5.1.2 [expr.prim.lambda] Status: WP Submitter: Herb Sutter Opened: 2012-09-23 Last modified: 2014-06-13

View all other issues in [expr.prim.lambda].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3424.pdf

Reviewed by EWG in Portland 2012, proceeding with a follow-up paper. Changes to const captures rejected, capturing of 'this' and members encouraged to continue with a follow-up paper.

Init-captures in C++14 provide the necessary facilities for capturing 'this' and class members, voted into the WP in Bristol 2013.


20. N3778, N3663, N3536, N3432 C++ Sized Deallocation

Section: 3.7.4 [basic.stc.dynamic] Status: WP Submitter: Lawrence Crowl Opened: 2012-09-23 Last modified: 2014-06-13

View all other issues in [basic.stc.dynamic].

View all issues with WP status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3663.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3536.html

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3432.html

Reviewed by EWG in Portland 2012, proceeding to CWG.

Wording available:

The paper contains the proposed wording.

Adopted in the Chicago 2013 meeting as N3778.


21. N3664, N3537, N3433 Clarifying Memory Allocation

Section: 3.7.4 [basic.stc.dynamic] Status: WP Submitter: Lawrence Crowl Opened: 2012-09-23 Last modified: 2014-06-13

View all other issues in [basic.stc.dynamic].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3537.html

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3433.html

Reviewed by EWG in Portland 2012, proceeding with a follow-up paper.

Adopted in Bristol 2013

Wording available:

The paper contains the proposed wording.


25. N3652, N3597, N3598, N3444 Relaxing syntactic constraints on constexpr function definitions

Section: 5.19 [expr.const] Status: WP Submitter: Richard Smith Opened: 2012-09-21 Last modified: 2014-06-13

View all other issues in [expr.const].

View all issues with WP status.

Discussion:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3444.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3597.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3598.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3652.html

Reviewed by EWG in Portland 2012, proceeding with a follow-up paper.

Accepted into the Working Draft in Bristol 2013, as N3652.


27. N3781 Single-Quotation-Mark as a Digit Separator, N3661, N3499 Digit Separators, N3448 Painless Digit Separation

Section: 2.10 [lex.ppnumber] Status: WP Submitter: Daveed Vandevoorde Opened: 2012-09-21 Last modified: 2014-06-13

View all issues with WP status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3499.html

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3448.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3661.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3781.pdf

Reviewed by EWG in Portland 2012, proceeding with a follow-up paper.

Bristol 2013:

Straw poll:

Double radix point as the suffix disambiguator:

SF: 8 F: 5 N: 0 A: 0 SA: 0

Convey to Core, target C++14:

SF: 10 F: 3 N: 0 A: 0 SA: 0

The paper was not adopted in Bristol, because its motion didn't pass.

Adopted in Chicago 2013, as N3781.

Wording available:

The paper contains the proposed wording.


40. [tiny] Relax the allocator requirements on vector so that the small object optimization is allowed

Section: 23.3.6 [vector] Status: Resolved Submitter: Nevin Liber Opened: 2012-11-27 Last modified: 2014-06-30

View all issues with Resolved status.

Discussion:

I'd like it to be possible to use the small object optimization (embedding up to a fixed number of objects inside the allocator itself) inside a vector.

Bristol 2013: Designated for LEWG.

Filed as LEWG Bug 38, closing as Resolved on the EWG side.


42. [tiny] basic_string(const charT*, size_type, const Allocator&) requires clause too restrictive

Section: 21.4.2 [string.cons] Status: Resolved Submitter: Nevin Liber Opened: 2012-12-19 Last modified: 2014-06-30

View all issues with Resolved status.

Discussion:

In n3485 21.4.2p6 (basic_string constructors and assignment operators), we have:

  basic_string(const charT* s, size_type n,
  const Allocator& a = Allocator());
  Requires: s shall not be a null pointer and n < npos.
That requires clause is too restrictive; s can be a null pointer when n==0. A (simplified) use case I have seen:
  std::string StringFromVector(std::vector<char> const& vc)
  { return std::string(vc.data(), vc.size()); }
Since a conforming implementation can return a null pointer for vc.data() when vc.size() == 0. I don't see any reason to disallow this construct, especially since it takes a Standards expert to see that this is possibly illegal, but not std::string(vc.data(), vc.data() + vc.size()).

This is likely to go onto the LEWG's plate.

Bristol 2013: Defer to LEWG.

Filed as LEWG Bug 39, closing as Resolved on the EWG side.

Wording available:

  Requires: n < npos and either s shall not be a null pointer or n == 0.

44. [tiny] variadic bind

Section: 20.8.9 [bind] Status: Resolved Submitter: Chris Jefferson Opened: 2013-01-25 Last modified: 2014-06-30

View all issues with Resolved status.

Discussion:

As more variadic functions work their way into my C++ code, I'm getting increasingly annoyed that there isn't a variadic bind. There is a tiny bit of annoyance on exactly what to use. There seems to me to be 2 sensible choices (other people may have others)

  1) _args : Use all otherwise unnamed arguments.
  2) _3onwards : All arguments from the 3rd onwards.
I haven't personally found a need for multiple ranges of variadic arguments, or more complicated chopping (such as getting the last few arguments), and I'd want to hopefully keep this simple if possible!

Bristol 2013: Defer to LEWG.

Filed as LEWG Bug 40, closing as Resolved on the EWG side.


45. [tiny] Type Trait is_range<T>

Section: 20.9.4.3 [meta.unary.prop] Status: Resolved Submitter: Nevin Liber Opened: 2013-02-05 Last modified: 2014-06-30

View all other issues in [meta.unary.prop].

View all issues with Resolved status.

Discussion:

I'd like to have an is_range<T, R = void> type trait, which derives from true_type if and only if T can be used in range-based for, and *__begin is convertible to R (where R == void means don't bother checking this condition).

Bristol 2013: Submitter is encouraged to proceed and present to LWG. Apparently LEWG doesn't handle these.

Filed as LEWG Bug 41, closing as Resolved on the EWG side.


46. [tiny] Type Trait is_final<T>

Section: 20.9.4.3 [meta.unary.prop] Status: WP Submitter: Nevin Liber Opened: 2013-02-05 Last modified: 2014-06-30

View all other issues in [meta.unary.prop].

View all issues with WP status.

Discussion:

I'd like to have an is_final<T> type trait, which is true if and only if T is a final type.

Bristol 2013: Submitter is encouraged to proceed and present to LWG. Apparently LEWG doesn't handle these.

Voted into C++14 in Issaquah 2014 as the resolution of LWG issue 2112.


61. N3653, N3605 Member initializers and aggregates

Section: 8.5.1 [dcl.init.aggr] Status: WP Submitter: Ville Voutilainen Opened: 2013-03-15 Last modified: 2014-06-13

View all other issues in [dcl.init.aggr].

View all issues with WP status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3605.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3653.html

Accepted into the Working Draft in Bristol 2013, as N3653.


62. N3648, N3610 Generic lambda-capture initializers, supporting capture-by-move

Section: 5.1.2 [expr.prim.lambda] Status: WP Submitter: Ville Voutilainen Opened: 2013-03-15 Last modified: 2014-06-13

View all other issues in [expr.prim.lambda].

View all issues with WP status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3610.html

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3648.html

Accepted into the Working Draft in Bristol 2013, as N3648.


64. N3651, N3615 Constexpr Variable Templates, N3552 Introducing Object Aliases

Section: 14.1 [temp.param] Status: WP Submitter: Gabriel Dos Reis Opened: 2013-03-18 Last modified: 2014-06-13

View other active issues in [temp.param].

View all other issues in [temp.param].

View all issues with WP status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3552.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3615.pdf

http://open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3651.pdf

Accepted into the Working Draft in Bristol 2013, as N3651.


67. [tiny] Unspecialized std::tuple_size should be defined

Section: 20.4.1 [tuple.general] Status: Resolved Submitter: Nevin Liber Opened: 2013-03-19 Last modified: 2014-06-30

View all issues with Resolved status.

Discussion:

In 20.4.1p2, the unspecialized std::tuple_size is undefined. It would be a lot more useful if it were defined as an empty struct; that way, it can be used with enable_if for determining whether or not it is valid to use tuple_size, tuple_element and get on the corresponding data structure.

This should go to LEWG.

Filed as LEWG Bug 42, closing as Resolved on the EWG side.


123. N3990 Adding Standard Circular Shift operators for computer integers

Section: 5 [expr] Status: Resolved Submitter: D. Gutson, A. Bustamante Opened: 2014-05-08 Last modified: 2014-06-30

View all other issues in [expr].

View all issues with Resolved status.

Discussion:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3990.pdf

Wording available:

The paper contains the proposed wording.

Discussed in Rapperswil 2014.

EWG was unanimously against having an operator for this, and recommended taking the idea up with the Numerics SG and then with LWG. Closing as resolved, Vandevoorde sent a heads-up to the Numerics reflector.


134. [tiny] Core closed issues with a previous extension status

Section: 1 [intro] Status: Resolved Submitter: Ville Voutilainen Opened: 2014-07-01 Last modified: 2014-07-02

View other active issues in [intro].

View all other issues in [intro].

View all issues with Resolved status.

Discussion:

13 extern "C" for Parameters of Function Templates -> request Core to close as NAD, Daveed says aliases with linkage are the solution. 1463 will be opened as an EWG issue to solve this.

92 Should exception-specifications be part of the type system? -> Instruct Core to close 92 as NAD. Maurer points out that he's going to be dealing with the area with TM. The rationale for closing is that EWG doesn't agree that being able to overload on noexcept is worth the trouble, nor does EWG think being able to have pointers-to-functions being different parameter types if they have different noexcept-specifications.

230 Calls to pure virtual functions -> Instruct Core to close 230 as NAD. Pure virtual functions can be called by non-virtual calls only, and it is by design that virtual calls should never resolve to the definition of a pure virtual function. The behaviour is undefined because implementations aren't required to prevent ending up in the pure virtual function definition. That is also by design.

623 Use of pointers to deallocated storage -> Instruct Core to close 623 as WP. The behavior is implementation-defined rather than undefined in the current working draft, and thus the requirements are no longer draconian. 312, which was resolved as DRWP points to 623, so also close 623 as DRWP.

755 Generalized lambda-captures -> Instruct Core to close 755 as WP. Generalized lambda-captures are in C++14.

947 Deducing type template arguments from default function arguments -> Open an EWG issue, 97, for 947, immediately close as NAD, explaining that the group doesn't think it's generally implementable. Leave the door open (but not the issue :)) for a restricted implementation.

1461 Narrowing conversions to bit-fields -> Instruct Core to close 1461 as NAD. It would break existing code and EWG doesn't consider the breakage to be worth it. Vandevoorde pointed out valid existing code that initializes bitfields (even with one bit) with -1.

1474 User-defined literals and <inttypes.h> format macros -> Instruct Core to close 1474 as NAD. The fix would be to remove UDLs.

1519 Conflicting default and variadic constructors -> Open an EWG issue for 1519, 107. Mark as NAD, there is a work-around and Concepts Lite will make the work-around much easier.