Standardization

C++14 Committee Draft (CD) Published at isocpp.org -- Michael Wong

[Ed.: Thanks to Michael Wong for sharing his commentary and perspective on the C++14 CD while on the scene at the C++Now conference. Posted at the IBM C/C++ Cafe blog.]

C++14 Committee Draft (CD) published at isocpp.org

C++14 Committee Draft is here and can be accessed at isocpp.org. This is in keeping with the practice of greater transparency ... [and] was also announced to the C++NOW crowd by Jens Weller at the Community evening session last night.

 

New paper: N3690, Programming Languages -- C++, Committee Draft

Note: This updated working draft contains all of the updates approved at the Bristol ISO C++ meeting to make this the C++14 Committee Draft. Today our project editor Stefanus Du Toit, wth the kind help of Jonathan Wakely and our editorial committee of Daniel Kruegler, Alisdair Meredith, Mike Miller, and Richard Smith, finished applying and verifying the updates voted in at Bristol. This document has now been transmitted to SC22 for circulation for C++14's primary international comment ballot.

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

Date: 2013-05-15

Programming Languages -- C++, Committee Draft

Thanks once again to the over 100 people who attended the Bristol meeting, and several hundred more who helped work on reaching this C++14 feature-complete milestone!

Once the ballot has completed, the next step will be to consider and address all of the national body comments, and then circulate an updated Draft International Standard (DIS) for its possibly-final ballot one level higher in ISO/IEC JTC1. For more information about the standards process and stages, please see Standardization | ISO/IEC JTC1 Procedures.

Post-Bristol standards papers mailing available

The official post-meeting standards papers mailing is now available. It includes papers adopted at the meeting, updated papers, and updated issues lists.

Please direct discussion to the public std-proposals forum.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
SD-1 2013 PL22.16/WG21 document list Clark Nelson 2013-05-07 2013-05      
SD-2 ISO WG21 and INCITS PL22.16 membership list Clark Nelson 2013-05-06 2013-05      
N3621 Minutes, WG21 Teleconference 2013-03-29 Kyle Kloepper 2013-03-29 2013-05      
N3622 Minutes: WG21 Meeting No. 55, 15-20 April 2013 - Bristol, UK Kyle Kloepper 2013-05-03 2013-05      
N3623 Minutes: PL22.16 Meeting No. 60, 15-20 April 2013 - Bristol, UK Kyle Kloepper 2013-05-03 2013-05      
N3624 Core Issue 1512: Pointer comparison vs qualification conversions (revision 3) Jens Maurer 2013-04-15 2013-05 N3498 Core Adopted 2013-04
N3625 A URI Library for C++ G. Matthews, D. Berris 2013-04-30 2013-05 N3507 Networking  
N3626 Floating-Point Typedefs Having Specified Widths P. Bristow, C. Kormanyos, J. Maddock 2013-04-05 2013-05   Numerics  
N3627 Relaxed switch statement Zhihao Yuan 2013-02-07 2013-05   Evolution  
N3628 C and C++ Compatibility Bjarne Stroustrup 2013-04-08 2013-05      
N3629 Simplifying C++0x Concepts Doug Gregor 2013-04-09 2013-05   Concepts  
N3630 async, ~future, and ~thread (Revision 1) Herb Sutter 2013-04-12 2013-05 N3451 Concurrency Revised N3636, N3637
N3631 C11: The New C Standard Thomas Plum   2013-05      
N3632 Additional std::async Launch Policies Peter Dimov 2013-04-11 2013-05   Concurrency  
N3633 What can signal handlers do? (CWG 1441) Hans Boehm 2013-4-25 2013-05 N3618 Concurrency  
N3634 Improvements to std::future<T> and Related APIs N. Gustafsson, A. Laksberg, H. Sutter, S. Mithani 2013-05-02 2013-05 N3558 Concurrency  
N3635 Towards restrict-like semantics for C++ M. Wong, R. Silvera, R. Mak, C. Cambly, et al. 2013-04-29 2013-05   Evolution  
N3636 ~thread should join Herb Sutter 2013-04-17 2013-05 N3630 Concurrency  
N3637 async and ~future (Revision 3) Herb Sutter 2013-04-17 2013-05 N3630 Concurrency  
N3638 Return type deduction for normal functions Jason Merrill 2013-04-17 2013-05 N3582 Core Adopted 2013-04
N3639 Runtime-sized arrays with automatic storage duration (revision 5) Jens Maurer 2013-04-16 2013-05 N3497 Core Adopted 2013-04
N3640 Extending shared_ptr to Support Arrays Peter Dimov 2013-04-15 2013-05   Library  
N3641 Extending make_shared to Support Arrays Peter Dimov 2013-05-02 2013-05   Library  
N3642 User-defined Literals for Standard Library Types (part 1 - version 4) Peter Sommerlad 2013-04-18 2013-05 N3531 Library Adopted 2013-04
N3643 Range Adaptor for Selecting from Pair or Tuple Alan Talbot 2013-04-16 2013-05 N3585 Ranges  
N3644 Null Forward Iterators Alan Talbot 2013-04-18 2013-05 N3585 Library Adopted 2013-04
N3645 Splicing Maps and Sets (Revision 1) A. Talbot, H. Hinnant, J. Dennett, J. Wakely 2013-05-04 2013-05 N3586 Library  
N3646 Network byte order conversion Robert Pratte 2013-04-16 2013-05 N3620 Networking  
N3647 Minutes: PL22.16 Meeting No. 59, 15-19 October 2012 Portland, Oregon, USA Kyle Kloepper 2013-04-15 2013-05 N3455    
N3648 Wording Changes for Generalized Lambda-capture D. Vandevoorde, V. Voutilainen 2013-04-17 2013-05 N3610 Evolution Adopted 2013-04
N3649 Generic (Polymorphic) Lambda Expressions (Revision 3) F. Vali, H. Sutter, D. Abrahams 2013-04-19 2013-05 N3559 Evolution Adopted 2013-04
N3650 Resumable Functions N. Gustafsson, D. Brewis, H. Sutter, S. Mithani 2013-05-02 2013-05 N3564 Concurrency  
N3651 Variable Templates (Revision 1) Gabriel Dos Reis 2013-04-19 2013-05 N3615 Evolution Adopted 2013-04
N3652 Relaxing constraints on constexpr functions / constexpr member functions and implicit const Richard Smith 2013-04-18 2013-05 N3597, N3598 Evolution Adopted 2013-04
N3653 Member initializers and aggregates V. Voutilainen, R. Smith 2013-04-17 2013-05 N3605 Evolution Adopted 2013-04
N3654 Quoted Strings Library Proposal (Revision 2) Beman Dawes 2013-04-19 2013-05 N3570 Library Adopted 2013-04
N3655 TransformationTraits Redux, v2 Walter E. Brown 2013-04-18 2013-05 N3546 Library Adopted 2013-04
N3656 make_unique (Revision 1) Stephan T. Lavavej 2013-04-18 2013-05 N3588 Library Adopted 2013-04
N3657 Adding heterogeneous comparison lookup to associative containers (rev 4) J. Wakely, S. Lavavej, J. Muñoz 2013-03-19 2013-05 N3465 Library Adopted 2013-04
N3658 Compile-time integer sequences Jonathan Wakely 2013-04-18 2013-05 N3493 Library Adopted 2013-04
N3659 Shared locking in C++ H. Hinnant, D. Vollmann, H. Boehm 2013-04-19 2013-05 N3568 Concurrency  
N3660 User-defined Literals for std::complex, part 2 of UDL for Standard Library Types (version 4) Peter Sommerlad 2013-04-19 2013-05 N3531 Library  
N3661 Digit Separators Lawrence Crowl 2013-04-19 2013-05 N3499 Evolution  
N3662 C++ Dynamic Arrays L. Crowl, M. Austern 2013-04-19 2013-05 N3532 Library Adopted 2013-04
N3663 C++ Sized Deallocation Lawrence Crowl 2013-04-30 2013-05 N3536 Core  
N3664 Clarifying Memory Allocation L. Crowl, C. Carruth, R. Smith 2013-04-19 2013-05 N3537 Core Adopted 2013-04
N3665 Uninterleaved String Output Streaming L. Crowl 2013-04-19 2013-05   Library  
N3666 C++ Latches and Barriers Alasdair Mackintosh 2013-04-18 2013-05 N3600 Concurrency  
N3667 Drafting for Core 1402 Jason Merrill 2012-04-16 2013-05   Core Adopted 2013-04
N3668 exchange() utility function, revision 3 Jeffrey Yasskin 2013-04-19 2013-05 N3608 Library Adopted 2013-04
N3669 Fixing constexpr member functions without const Nicolai Josuttis 2013-04-19 2013-05   Library Adopted 2013-04
N3670 Wording for Addressing Tuples by Type: Revision 2 Mike Spertus 2013-04-19 2013-05 N3584 Library Adopted 2013-04
N3671 Making non-modifying sequence operations more robust: Revision 2 M. Spertus, A. Pall 2013-04-19 2013-05 N3607 Library Adopted 2013-04
N3672 A proposal to add a utility class to represent optional objects (Revision 4) F. Cacciola, A. Krzemieński 2013-04-19 2013-05 N3527 Library Adopted 2013-04
N3673 C++ Library Working Group Ready Issues Bristol 2013 Daniel Krügler 2013-04-19 2013-05 N3522 Library Adopted 2013-04
N3674 C++ Standard Core Language Active Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3539 Core  
N3675 C++ Standard Core Language Defect Reports and Accepted Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3540 Core  
N3676 C++ Standard Core Language Closed Issues, Revision 84 William M. Miller 2013-05-03 2013-05 N3541 Core  
N3677 A Proposal to Add additional RAII Wrappers to the Standard Library Andrew L. Sandoval 2013-04-26 2013-05   Library  
N3678 C++ Stream Guards Lawrence Crowl 2013-04-30 2013-05   Concurrency  
N3679 Async() future destructors must wait Hans-J. Boehm 2013-5-05 2013-05   Concurrency  
N3680 Improving pair and tuple Daniel Krügler 2013-04-14 2013-05   Library  
N3681 Auto and braced-init lists Ville Voutilainen 2013-05-02 2013-05   Evolution  
N3682 C++ Standard Evolution Active Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05 N3566 Evolution  
N3683 C++ Standard Evolution Completed Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05   Evolution  
N3684 C++ Standard Evolution Closed Issues List (Revision R02) Ville Voutilainen 2013-04-29 2013-05 N3567 Evolution  
N3685 string_view: a non-owning reference to a string, revision 4 Jeffrey Yasskin 2013-05-03 2013-05 N3609 Library  
N3686 Traversable arguments for container constructors and methods, wording revision 3 Jeffrey Yasskin 2013-05-03 2013-05 N3513 Ranges  
N3687 C++ Standard Library Active Issues List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3522 Library  
N3688 C++ Standard Library Defect Report List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3523 Library  
N3689 C++ Standard Library Closed Issues List (Revision R83) Alisdair Meredith 2013-05-06 2013-05 N3524 Library  

Trip Report: ACCU 2013 and the C++ Standards Meeting -- Anthony Williams

Anthony Williams just posted another nice trip report on the recent standards meeting in Bristol, as well as a few words on the ACCU conference held back-to-back with the ISO meeting:

ACCU 2013 and the C++ Standards Meeting

by Anthony Williams

 

This year's ACCU conference was at a new venue: the Marriott hotel in Bristol. This is a bit closer to home for me than the previous venue in Oxford, which made the trip there and back more comfortable. As ever, the conference itself was enjoyable, educational and exhausting in equal measure.

 

This year was also BSI's turn to host the Spring ISO C++ committee meeting, which was conveniently arranged to be the week following ACCU, in the same hotel. Having not attended a meeting since the last time the committee met in the UK, I was glad to be able to attend this too. ...

Trip Report: ISO C++ Spring 2013 Meeting, Part 3 -- Michael Wong

iconNoCommunityPhoto155.pngPart 3 of Michael Wong's trip report:

The view from C++ Standard meeting April 2013 Part 3

by Michael Wong

In this series that looks at C++14 content, we looked at features from Language and Library for C++14. Now we will look at Concurrency which is the other group that contributed features for C++14. In reality, some of the features from Language and Library also came from Concurrency. ...

Trip Report: ISO C++ Spring 2013 Meeting, Part 2 -- Michael Wong

iconNoCommunityPhoto155.pngPart 2 of Michael Wong's trip report:

The view from C++ Standard meeting April 2013 Part 2

by Michael Wong

In part 1 of this trip report, I spoke about the general mood of the April C++ Std meeting in Bristol and the plan to release C++14 [Committee] Draft (CD) after the meeting. I also deep dived into the language feature set for C++14.

Now I will deep dive onto the library feature additions for C++14. As with the language features, some of these originated from other subgroups. As before, I will not talk about minor bug fixes, but also talk about proposals that did not pass as they are often the most controversial. ...

Trip Report: ISO C++ Spring 2013 Meeting -- Michael Wong

iconNoCommunityPhoto155.pngA trip report from Michael Wong:

The view from C++ Standard meeting April 2013 Part 1

by Michael Wong

... Our goal was to triage all features that can enter C++14. This means C++14 is more than just bug fixes and is unlike a Technical Corrigendum like TC1 which bridged C++ 1998 to C++2003. As such it will have additional features beyond defect fixes that has been deemed to be small enough in scope and solution but significant enough in annoyance that it should be fixed immediately post C++11...

Here are the new language extensions voted in...

Thanks to our Bristol hosts!

I would like to personally thank (again) our hosts for last week's ISO C++ standards meeting in Bristol, notably Roger Orr and our U.K. national body host BSI, as well as the sponsors who supported the meeting financially and otherwise: ACCU, Google, Archer-Yates, Getco, Red Hat, and Gnu C++ User.

  

Our hosts and sponsors not only provided great facilities, but demonstrated grace under pressure when the registered attendee count rose beyond expectations weeks before the meeting, and then continued to rise, ending up far above recent attendance records. Our hosts rose to the occasion, providing meeting space for more national body experts and more subgroups meeting in parallel than we've seen for some 15 years. And they generously fed everyone lunch each day for six days, going well above and beyond expectations. (The hosts for the Chicago meeting this fall have taken notice and are preparing accordingly, and we appreciate their generosity as well.)

Aside: My trip report graph shows that there were 100 experts attending last week, but that's conservative. We had 102 pre-registered to attend, and it looks like the final count will be 107 at the meeting; I'm waiting for the confirmed number and will update that trip report when I get it. For comparison, up till 2011 the average meeting attendance was half that.

Thanks again, Roger and BSI and all of our meeting sponsors! It was a well-hosted, smoothly run, and very productive meeting. Thank you.

New adopted paper: N3659, Shared Locking in C++ -- Howard Hinnant, Detlef Vollmann, Hans Boehm

Note: This paper was adopted into draft C++14 on Saturday at the Bristol UK ISO C++ meeting.

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

Date: 2013-04-19

Shared locking in C++ (a.k.a. reader/writer locks)

by Howard Hinnant, Detlef Vollmann, Hans Boehm

Excerpt:

N3568 was presented at the Spring 2013 meeting in Bristol to SG1 (Concurrency and Parallelism). The decision was to bring shared_mutex only forward for C++14. Also the specification should allow for spurious failures.

 

From N3568:

This proposal adds functionality to allow clients to easily code the well-known multiple-readers / single-writer locking pattern. ...

... a shared_mutex can be locked in one of two ownership modes:

  1. Exclusive, using lock(), or
  2. Shared, using lock_shared().

... The recommended pattern for locking a shared_mutex in shared ownership mode is not to call m.lock_shared() directly, but to use shared_lock<shared_mutex>:

shared_mutex mut;
...
void foo()
{
     shared_lock<shared_mutex> _(mut);
     // mut lock_shared'd here
     // ...
}    // mut.unlock_shared() called here