Standardization

N4018-20: Core Issues Lists -- Mike Miller

New WG21 papers are available. Copies are linked below, and will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document numbers: N4018-20

Date: 2014-05-27

C++ Standard Core Language Active Issues, Revision 89

C++ Standard Core Language Defect Reports and Accepted Issues, Revision 89

C++ Standard Core Language Closed Issues, Revision 89

by William M. Miller

N4016: Light-Weight Execution Agents, Revision 2 --- Torvald Riegel

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4016

Date: 2014-05-23

Light-Weight Execution Agents, Revision 2

by Torvald Riegel

Excerpt:

Changes between N3874 and N4016:

  • Added underlying progress de nition based on implementation steps and scheduler guarantees (Section 2.1).
  • Refi ned forward progress classes (see Section 2.2): Base de finitions on implementation steps instead of blocking; merge SIMD+Parallel with the weaker variant of Parallel and rename to Weakly Parallel; re fine safety guarantee description of SIMD and rename to Strict SIMD.
  • A few changes in Section 2.3.
  • Added discussion of semantics of spawning and blocking on EAs (Section 2.4).
  • Added a more detailed overview of related proposals (Section 3).

N3997: Centralized Defensive-Programming Support for Narrow Contracts (R5) -- Lakos, Zakharov, Beels

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3997

Date: 2014-05-27

Centralized Defensive-Programming Support for Narrow Contracts (Revision 5)

by John Lakos, Alexei Zakharov, Alexander Beels

Excerpt:

In this proposal, we describe a centralized facility for supporting generalized runtime validation of function contracts. ..

This proposal is a revision to N3963.

In response to comments at Issaquah, a facility has been added to allow installation of a scoped, thread-local contract-violation handler. When a handler is installed using this facility, the handler will be used only by assertions in the thread from which the handler is installed, and only for the duration of the scope in which the handler is active. At the end of that scope, the previously installed handler for that thread will be restored -- i.e., either the previously installed local handler or (if no local handler was previously installed) the global one.
Additionally, an error in the specified behavior of the contract-assert test macros (section 11.2.5) has been corrected.

Finally, the formal wording has been extensively revised to increase clarity.

N4050: Dynarray Semi-Editorial Issues -- Lawrence Crowl

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4050

Date: 2014-05-26

Dynarray Semi-Editorial Issues

by Lawrence Crowl

Summary: Four lines of wording changes to N3820, the Array Extensions working paper.

N4036: Towards Implementation and Use of memory order consume -- McKenney, Riegel, Preshing, et al.

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4036

Date: 2014-05-22

Towards Implementation and Use of memory order consume

by Paul E. McKenney, Torvald Riegel, Je ff Preshing, et al.

Excerpt:

Despite the growing number of memory_order_consume use cases, there are no known high-performance implementations of memory_order_consume loads in any C11 or C++11 environments. This situation suggests that some change is in order: After all, if the standard does not support this use case, the corresponding users can be expected to continue to exploit whatever implementation-specifi c facilities provide the required functionality. This document therefore provides a brief overview of RCU in Section 2 and surveys memory_order_consume use cases within the Linux kernel in Section 3. Section 4 looks at how dependency ordering is currently supported in pre-C11 implementations, and then Section 5 looks at possible ways to support those use cases in existing C11 and C++11 implementations, followed by some thoughts on incremental paths towards official support of these use cases in the standards. Section 6 lists some weaknesses in the current C11 and C++11 speci cation of dependency ordering, and finally Section 7 outlines a few possible alternative dependency-ordering speci fications.

Note: SC22/WG14 liaison issue.

N4014: Uniform Copy Initialization -- Nicolai Josuttis

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4014

Date: 2014-05-25

Uniform Copy Initialization

by Nicolai Josuttis

Excerpt:

C++ distinguishes between copy initialization and direct initialization (see 8.5 §17).

This has the effect that an explicit in a constructor disables copy initialization, while direct initialization is still supported.

This proposal suggests to deal with copy initializations as with direct initializations.

N4007: Delimited iterators (Rev. 2) -- Mike Spertus

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4007

Date: 2014-05-25

Delimited iterators (Rev. 2)

by Mike Spertus

Excerpt:

... In the LEWG discussion of N3581 in Issaquah, it was pointed out that the interactions of this proposal were unexpectedly subtle, so the authors wish to discuss the design decisions in more detail. ...

N4006: An improved emplace() for unique-key maps -- Thomas Köppe

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N4006

Date: 2014-05-26

An improved emplace() for unique-key maps

by Thomas Köppe

Excerpt:

The author had initially proposed in N3873 to add new specialised algorithms to unique-key maps, ... When that paper was presented in Issaquah in February 2014, Jeffrey Yasskin created LWG 2362 to track the core problem, namely the lack of specification of whether moving-from happens. At the meeting, there seems to have been a strong consensus that emplace should “just work”, but that no progress could be made until a concrete proposal had been worked out. At the same time, new algorithms should not be added, and a fixed emplace would provide the desired functionality. It was also recognized that fixing emplace would not be trivial and that there would need to be a way to extract the key from the arguments.

N3996: Static reflection -- Matúš Chochlík

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3996

Date: 2014-05-26

Static reflection

by Matúš Chochlík

Excerpt:

Reflection and reflective programming can be used for a wide range of tasks such as implementation of serialization-like operations, remote procedure calls, scripting, automated GUI-generation, implementation of several software design patterns, etc. C++ as one of the most prevalent programming languages lacks a standardized reflection facility.

N3980: Types Don't Know # -- Howard Hinnant

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3980

Date: 2014-05-24

Types Don't Know #

by Howard Hinnant

Excerpt:

This paper proposes a new hashing infrastructure that completely decouples hashing algorithms from individual types that need to be hashed. This decoupling divides the hashing computation among 3 different programmers who need not coordinate with each other: ...

To start off with, we emphasize: there is nothing in this proposal that changes the existing std::hash, or the unordered containers. And there is also nothing in this proposal that would prohibit the committee from standardizing both this proposal, and either one of N3333 or N3876.