September 2013

New paper: N3773, async and ~future (Revision 4) -- Herb Sutter, Chandler Carruth, Niklas Gustafsson

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

Date: 2013-09-12

async and ~future (Revision 4)

by Herb Sutter, Chandler Carruth, Niklas Gustafsson

Excerpt:

N3637 documented the consensus of SG1 in Bristol. This paper is a minor update to N3637 to make the “change std::async” part of the proposal explicitly separable by updating the example code and adding three alternate sections to section 3 (3.1, 3.2, 3.3). This is to reflect that the main question at the end of Bristol was about how changing std::async affects binary compatibility, and to reflect the “N3637 except {remove|deprecate|leave-as-is} std::async instead of changing it” straw polls that had the most support in the July Santa Clara SG1 meeting.

Papers for Chicago: Concurrency

The start of my series about the papers for the upcoming Chicago meeting, starting with C for Concurrency:

C++ Papers for Chicago: Part 1 -- Concurrency

by Jens Weller

From the article:

As I did write a series about the papers for Bristol, this is the start of the series for Chicago, as at the end of this month the C++ committee will meet again for standardization. I try to...

GoingNative 2013 videos now available

gn13-signed.jpgThe videos from last week's GoingNative 2013 are now posted and available for on-demand viewing on Channel 9. Over 20 hours of live presentations cover everything from the latest in the language and the standard library, to C++'s evolution and momentum across the industry, to style guidance and the latest in C++11/14 features, to the optimizer and code generation for modern processors like Haswell, to experience in specific domains and platforms, and more.

GN'13 was a huge success thanks to Channel 9 and all the speakers, including headliner Bjarne Stroustrup and esteemed speakers Sean Parent, Andrei Alexandrescu, Stephan T. Lavavej, Jim Radigan, Herb Sutter, Scott Meyers, Michael Wong, Chandler Carruth, Ales Holecek, Elliot Omiya, Deon Brewis, Niklas Gustafsson, Eric Brumer, and Garrett Serack. Thanks to everyone who came to present and participate in this year's event.

The GN folks and others are working hard on next year. Stay tuned for more information in the months ahead. In the meantime, enjoy this material and be sure to share the ones you find most interesting and useful with your friends and colleagues.

Value-initialization with C++ -- Andrzej KrzemieĊ„ski

Do you know what value-initialization means, and why it's simpler in C++11?

Value-initialization with C++

by Andrzej Krzemieński

From the article:

Some time ago, I showed how boost::value_initialized can be used to value-initialize objects in generic components in C++03. In C++11 it is practically not necessary. C++11 gives you a way to force value-initialization of your objects in any possible initialization context.

Are you familiar with term “value initialization”? It is sometimes confused with “default-initialization”...

Pre-Chicago standards papers mailing available

The official pre-meeting standards papers mailing is now available. It includes the spring meeting agenda, updated issues lists, and a number of new papers including some that came through the public std-proposals forum. (Update: Please also direct discussion about these papers to that forum.)

Note: All of these papers have also been posted already to this site’s Standardization RSS feed. Subscribe to that feed to see the papers as they appear.

 

N3704 AGENDA, PL22.16 Meeting No. 61, WG21 Meeting No. 56, September 23-28, 2013 - Chicago, IL, USA Stephen D. Clamage 2013-07-13 2013-09      
N3705 Agenda and Meeting Notice for WG21 Telecon Meeting Herb Sutter 2013-07-23 2013-09      
N3706 C++ Distributed Counters Lawrence Crowl 2013-09-01 2013-09 N3355 Concurrency  
N3707 2014-02 Meeting Invitation and Information Herb Sutter 2013-08-06 2013-09      
N3708 A proposal to add coroutines to the C++ standard library O. Kowalke, N. Godspeed 2013-03-04 2013-09   Library  
N3709 Minutes for July 2013 Santa Clara SG1 Meeting H.. Boehm, J. Hoberock, A. Mackintosh 2013-8-29 2013-09      
N3710 Specifying the absence of "out of thin air" results (LWG2265) H. Boehm, et al. 2013-8-29 2013-09   Concurrency  
N3711 Task Groups As a Lower Level C++ Library Solution To Fork-Join Parallelism A. Laksberg, H. Sutter 2013-08-15 2013-09   Concurrency  
N3712 Policy-Based Design for Safe Destruction in Concurrent Containers Arch D. Robison 2013-08-30 2013-09   Concurrency  
N3713 C++ Standard Core Language Active Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3674 Core  
N3714 C++ Standard Core Language Defect Reports and Accepted Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3675 Core  
N3715 C++ Standard Core Language Closed Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3676 Core  
N3716 A printf-like Interface for the Streams Library Zhihao Yuan 2013-08-18 2013-09 N3506 Library  
N3717 SG5: Transactional Memory (TM) Meeting Minutes 2013/06/24-2013/08/26 Michael Wong 2013-08-30 2013-09      
N3718 Transactional Memory Support for C++ M. Wong, V. Luchangco, J. Maurer, M. Moir, et al. 2013-08-30 2013-09   Evolution  
N3719 Extend INVOKE to support types convertible to target class Tomasz Kamiński 2013-08-17 2013-09   Library  
N3720 Working Draft Technical Specification - URI G. Matthews, D. Berris 2013-08-30 2013-09 N3625 Networking  
N3721 Improvements to std::future<T> and Related APIs N. Gustafsson, A. Laksberg, H. Sutter, S. Mithani 2013-08-30 2013-09 N3634 Concurrency  
N3722 Resumable Functions N. Gustafsson, D. Brewis, H. Sutter, S. Mithani 2013-08-30 2013-09 N3650 Concurrency  
N3723 Extend operator-> to support rvalues Pascal Constanza 2013-08-23 2013-09   Evolution  
N3724 A Parallel Algorithms Library J. Hoberock, O. Giroux, V. Grover, H. Sutter, et al. 2013-08-30 2013-09 N3554 Concurrency  
N3725 Original Draft Specification of Transactional Language Constructs for C++ Version 1.1 (February 3, 2012) M. Wong, A. Adl-Tabatabai, T. Shpeisman, J. Gottschlich 2013-08-30 2013-09   Evolution  
N3726 Polymorphic Memory Resources Pablo Halpern 2013-09-02 2013-09 N3525 Library  
N3727 A proposal to add invoke function template Tomasz Kamiński 2013-08-01 2013-09   Library  
N3728 Packaging Parameter Packs (Rev. 2) Mike Spertus 2013-09-03 2013-09 N3416 Reflection  
N3729 Invocation type traits Mike Spertus 2013-09-02 2013-09 N3579 Library  
N3730 Specializations and namespaces Mike Spertus 2013-08-28 2013-09   Evolution  
N3731 Executors and schedulers, revision 2 C. Mysen, N. Gustafsson 20130825 2013-09 N3562 Concurrency  
N3732 Value-Oriented Concurrent Unordered Containers A. Robison, A. Potapov, A. Malakhov 2013-08-30 2013-09   Concurrency  
N3733 ISO/IEC CD 14882, C++ 2014, National Body Comments Barry Hedquist 2013-08-26 2013-09      
N3734 Vector Programming: A proposal for WG21 Robert Geva 2013-09-02 2013-09   Concurrency  
N3735 On the difference between parallel loops and vector loops Robert Geva 2013-09-02 2013-09   Concurrency  
N3736 C++ Standard Evolution Active Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3682 Evolution  
N3737 C++ Standard Evolution Completed Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3683 Evolution  
N3738 C++ Standard Evolution Closed Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3684 Evolution  
N3739 Improving pair and tuple, revision 1 Daniel Krügler 2013-09-02 2013-09 N3680 Library  
N3740 A Proposal for the World's Dumbest Smart Pointer, v2 Walter E. Brown 2013-08-30 2013-09 N3514 Library  
N3741 Toward Opaque Typedefs for C++1Y, v2 Walter E. Brown 2013-08-30 2013-09 N3515 Evolution  
N3742 Three <random>-related Proposals, v2 Walter E. Brown 2013-08-30 2013-09 N3547 Library  
N3743 Conditionally-supported Special Math Functions for C++14, v2 Walter E. Brown 2013-08-30 2013-09 N3548 Library  
N3744 Proposing [[pure]] Walter E. Brown 2013-08-30 2013-09   Evolution  
N3745 Feature-testing recommendations for C++ Clark Nelson 2013-08-28 2013-09 N3694 Evolution  
N3746 Proposing a C++1Y Swap Operator, v2 Walter E. Brown 2013-08-30 2013-09 N3553 Evolution  
N3747 A Universal Model for Asynchronous Operations Christopher Kohlhoff 2013-09-01 2013-09   Concurrency  
N3748 Implicit Evaluation of "auto" Variables and Arguments P. Gottschling, J. Falcou, H. Sutter 2013-08-30 2013-09   Evolution  
N3749 Constexpr Library Additions: functional Marshall Clow 2013-08-31 2013-09   Library  
N3750 C++ Ostream Buffers Lawrence Crowl 2013-09-01 2013-09   Concurrency  
N3751 Object Lifetime, Low-level Programming, and memcpy Gabriel Dos Reis 2013-09-03 2013-09   Undefined behavior  
N3752 Index Based Ranges A. Shödl, F. Fracassi 2013-08-30 2013-09   Ranges  
N3753 Centralized Defensive-Programming Support for Narrow Contracts (Revision 1) J. Lakos, A. Zakharov 2013-08-30 2013-09 N3604 Library  
N3754 C++ Standard Library Active Issues List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3687 Library  
N3755 C++ Standard Library Defect Report List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3688 Library  
N3756 C++ Standard Library Closed Issues List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3689 Library  
N3757 Support for user-defined exception information and diagnostic information in std::exception Emil Dotchevski 2013-08-30 2013-09   Library  
N3758 Standard exception information types for std::exception Emil Dotchevski 2013-08-30 2013-09   Library  
N3759 SIMD Vector Types Matthias Kretz 2013-08-30 2013-09   Library  
N3760 [[deprecated]] attribute Alberto Ganesh Barbati 2013-09-01 2013-09 N3394 Core  
N3761 Proposing type_at<> Sean Middleditch 2013-08-29 2013-09   Library  
N3762 string_view: a non-owning reference to a string, revision 5 Jeffrey Yasskin 2013-09-01 2013-09 N3685 Library  
N3763 Traversable arguments for container constructors and methods, wording revision 4 Jeffrey Yasskin 2013-09-01 2013-09 N3686 Library  
N3764 Ruminations on relational operators Ville Voutilainen 2013-09-02 2013-09   Library  
N3765 On Optional Tony Van Eerd 2013-9-01 2013-09   Library  
N3766 The identity type transformation Jeffrey Yasskin 2013-09-03 2013-09   Library  

 

New paper: N3765, On Optional -- Tony Van Eerd

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

Date: 2013-09-01

On Optional

by Tony Van Eerd

Excerpt:

optional<T>::operator<() is currently defined in terms of std::less(). The reasoning for this was to
enable things like optional<T*> to work correctly in standard containers like std::map<>.

However, it would be better to instead specialize std::less for optional<T>.

New paper: N3764, Ruminations on relational operators -- 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 number: N3764

Date: 2013-09-02

Ruminations on relational operators

by Ville Voutilainen

Excerpt:

This paper enumerates existing practice for relational operators, enumerates various proposals for changing/fixing the relational operators for std::optional, and proposes to apply a strategy consistent with the relational operators of std::tuple.

New paper: N3761, Proposing type_at -- Sean Middleditch

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

Date: 2013-08-29

Proposing type_at<>

by Sean Middleditch

Excerpt:

The standard library currently is missing utility templates for extracting types from a variadic template type list, requiring users to instantiate a std::tuple<> in order to extract a type from a specific position within a variadic template type list.

A simple library addition can make certain recurisve uses of variadic templates easier and not dependent on the unrelated concept of a tuple.

This proposal is a pure library addition with no language changes or backwards compatibility regressions. The proposed language for value_at<> depends on N3638, though it could be written without this requirement using type_at<> instead.

New paper: N3760, [[deprecated]] attribute -- Alberto Ganesh Barbati

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

Date: 2013-09-01

[[deprecated]] attribute

by Alberto Ganesh Barbati

Excerpt:

This is an update of N3394, bearing changes proposed in the pre-Chicago Drafting Review Teleconference of 2013-08-26. The main difference is that the list of the cases where the attribute can be used has changed, by removing namespaces, enumerators, templates and adding non-static data members.