N3848: Working Draft, Technical Spec. on C++ Extensions for Library Fundamentals -- Jeffrey Yasskin

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: N3848

Date: 2014-01-18

Working Draft, Technical Specification on C++ Extensions for Library Fundamentals

by Jeffrey Yasskin

Excerpt:

This technical specification describes extensions to the C++ Standard Library (1.2). These extensions are classes and functions that are likely to be used widely within a program and/or on the interface boundaries between libraries written by different organizations.

... The goal of this technical specification it to build more widespread existing practice for an expanded C++ standard library.

N3851: Multidimensional bounds, index and array_view -- Łukasz Mendakiewicz, Herb Sutter

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: N3851

Date: 2014-01-17

Multidimensional bounds, index and array_view

by Łukasz Mendakiewicz, Herb Sutter

Excerpt:

Programs performing computations on multidimensional data are relatively common (e.g. operations on dense matrices or image processing) yet there is no standardized approach in C++ to express the concept of dimensionality. This document aims to fill this gap in the Standard C++ Library by proposing the following closely related types:

  • bounds and index as means of defining and addressing multidimensional discrete spaces.
  • array_view and strided_array_view as multidimensional views on contiguous or strided memory ranges, respectively.
  • bounds_iterator providing interoperability with iterator-based algorithms.

While the proposal builds on Microsoft experience of implementing and using similar extent, index and array_view types in their data parallel programming model -- C++ AMP [1] -- we believe that these concepts will also benefit a wider C++ community.

N3832: Task Region -- P Halpern, A Robison, H Hong, A Laksberg, G Nishanov, H Sutter

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: N3832

Date: 2014-01-17

Task Region

by Pablo Halpern, Arch Robison, Hong Hong, Artur Laksberg, Gor Nishanov, Herb Sutter

Excerpt:

This paper introduces C++ library functions task_region, task_run and task_wait that enable developers
to write expressive and portable parallel code.

...

A previous proposal, N3711, was presented to the Committee at the Chicago meeting in 2013. N3711 closely
follows the design of the PPL/TBB with slight modifications to improve exception safety.

This proposal adopts a simpler syntax than N3711 -- one that eschews a named object in favor of three
namespace-scoped functions. It improves N3711 in the following ways:

  • The exception handling model is simplified and more consistent with normal C++ exceptions.
  • Strict fork-join parallelism is now enforced at compile time.
  • The syntax allows scheduling approaches other than child stealing.

We aim to converge with the language-based proposal for low-level parallelism described in N3409 and related documents.

N3850: Working Draft, Technical Specification for C++ Extensions for Parallelism -- Jared Hoberock

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: N3850

Date: 2014-01-17

Working Draft, Technical Specification for C++ Extensions for Parallelism

by Jared Hoberock

Excerpt:

This Technical Specification describes requirements for implementations of an interface that computer
programs written in the C++ programming language may use to invoke algorithms with parallel execution.
The algorithms described by this Technical Specification are realizable across a broad class of computer
architectures.

... The goal of this Technical Specification is to build widespread existing practice for parallelism in the C++ standard algorithms library.

N3857: Improvements to std::future<T> and Related APIs --Gustafsson, Laksberg, Sutter, Mithani

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: N3857

Date: 2014-01-16

Improvements to std::future and Related APIs

by Niklas Gustafsson, Artur Laksberg, Herb Sutter, Sana Mithani

Excerpt:

This proposal is an evolution of the functionality of std::future/std::shared_future. It details additions which can enable wait free compositions of asynchronous operations.

This document supersedes N3784. Several typos in the code samples have been fixed, and a small editorial change made in the Technical Specification section.

N3880: Improving the Verification of C++ Programs -- Michael Price

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: N3880

Date: 2014-01-16

Improving the Verification of C++ Programs

by Michael Price

Excerpt:

Following is a list of ideas to serve as a starting point for further discussion. They are ordered roughly in their perceived difficulty/impact on the language and tools.

  • Capabilities for better static_assert messages
  • Better support for verifying API design decisions (i.e. testing compile-time failures)
  • Discrete classification of causes of ill-formedness
  • Better source code contextual information capabilities (as called for by Reflection study group)
  • A std::test_exception (bikeshed) type to serve as a basis for...
  • An full-featured assertion library
  • Registration of code to be run during verification
  • Automated generation of verification programs

N3873: Improved insertion interface 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: N3873

Date: 2014-01-20

Improved insertion interface for unique-key maps

by Thomas Köppe

Excerpt:

The existing interface of unique-keyed map containers (std::map, std::unordered_map) is slightly underspecified, which makes certain container mutations more complicated to write than necessary. This proposal is to add new specialized algorithms:

  • emplace_stable(): if the key already exists, does not insert and does not modify the arguments.
  • emplace_or_update(): inserts or updates the mapped element if the key already exists.

N3836-38, Evolution Issues Lists -- Ville Voutilainen

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 numbers: N3836-38

Date: 2014-01-16

C++ Standard Evolution Active Issues List (Revision R05)

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

C++ Standard Evolution Closed Issues List (Revision R05)

by Ville Voutilainen

Excerpt:

The purpose of this document is to record the status of issues which have come before the Evolution Working Group (EWG) of the INCITS PL22.16 and ISO WG21 C++ Standards Committee. Issues represent potential defects in the ISO/IEC IS 14882:2003(E) document, and proposed extensions to it.

GotW #95 Solution: Thread Safety and Synchronization -- Herb Sutter

The solution to the latest GotW problem is now available:

GotW #95 Solution: Thread Safety and Synchronization

by Herb Sutter

From the article:

This GotW was written to answer a set of related frequently asked questions. So here’s a mini-FAQ on "thread safety and synchronization in a nutshell," and the points we’ll cover apply to thread safety and synchronization in pretty much any mainstream language.

ACCU 2014 conference schedule posted (April 8-12)

accu-2014.PNG

Conference chair Jon Jagger has published the conference schedule and session abstracts for ACCU 2014.

ACCU 2014 Conference Schedule

Follow conference news via @accu2014 on Twitter.

Some highlights of this year's schedule include a number of C++ talks. Most of the following speakers are ISO C++ committee members:

Switching to C++11 and C++14 in One Day (Nico Josuttis)

C++14 -- An Overview of the New Standard for C++(11) Programmers (Peter Sommerlad)

There Ain't No Such Thing As a Universal Reference (Jonathan Wakely)

The C++14 Standard Library (Jonathan Wakely)

C++ Dynamic Performance (Aleksandar Fabijanic)

C++ Undefined Behavior -- What Is It, and Why Should I Care? (Marshall Clow)

Large-Scale C++ -- Advanced Levelization Techniques (John Lakos)

C++ Pub Quiz (Olve Maudal)

Creating Safe Multi-Threaded Applications in C++11 (Jos van Eijndhoven)

Random Number Generation in C++ -- Present and Potential Future (Pattabi Raman)

Range and Elevation -- C++ In a Modern World (Steve Love)

Generic Programming with Concepts Lite (Andrew Sutton)

Where Is C++ Headed? (Hubert Matthews)

Complementary Visions: Integrating C++ and Python with Boost.Python (Austin Bingham)

The Continuing Future of C++ Concurrency (Anthony Williams)

Polymorphic Allocators for Fundamental Libraries (Alisdair Meredith)

Executors for C++ (Detlef Vollmann)

Endnote: Everything You Ever Wanted To Know About Move Semantics (and then some) (Howard Hinnant)