Standardization

N3909: A SFINAE-Friendly std::iterator_traits, v2 -- Walter Brown

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

Date: 2014-02-10

A SFINAE-Friendly std::iterator_traits, v2

by Walter Brown

Excerpt:

This paper proposes to reformulate the specification of iterator_traits so as to avoid a hard error when its template argument does not have the member types and other characteristics expected of a non-pointer iterator, and thus to make the trait conveniently usable in a SFINAE context.

...

6 Acknowledgments

Many thanks to the readers of early drafts of this paper for their thoughtful comments. Special thanks to Howard Hinnant for his suggestion to validate the nested iterator_category.

N3957-59, 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: N3957-59

Date: 2014-02-28

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

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

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

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.

N3912: Auto and braced-init-lists, continued -- 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: N3912

Date: 2014-02-24

Auto and braced-init-lists, continued

by Ville Voutilainen

Excerpt:

It was reported (with emphasis) by Mikael Kilpeläinen that init-captures deduce types the same way as auto does. This means that direct-initialization using braces in an init-capture will create an initializer_list. The EWG found this harmful, and is proposing a compromise change that differs from N3681 in the sense that direct-initialization using braces would not yield initializer_lists, whereas copy-initialization using braces would. Example: ...

N3947: URI - Proposed Wording (Revision 4) -- Glyn Matthews, Dean Michael Berris

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

Date: 2014-02-28

URI - Proposed Wording (Revision 4)

by Glyn Matthews, Dean Michael Berris

Excerpt:

Revisions to N3827

  1. Reverted normalization invariant and added the normalize member function and uri_normalization_level again.
  2. Added functions for interoperability with std::filesystem::path.
  3. Replaced multiple exception classes with a single exception class, uri_error. The uri_error enum has become uri_error_code.
  4. Updated make_relative and resolve sections.
  5. Removed references to IETF RFC 2732, which, it was pointed out, is superseded by IETF RFC 3986.

Acknowledgements

C++ Network Library users and mailing list

Kyle Kloepper and Niklas Gustafsson for providing valuable feedback and encouragement, and for presenting different versions of this proposal at committee meetings.

Beman Dawes and his Filesystem proposal from which I was influenced strongly in the class design.

Thiago Macieira of Qt for important feedback on the draft proposal.

David Thaler for suggesting corrections to errors in referencing IETF standards.

Wikipedia, for being there.

N3961: A proposal to add shared_mutex (untimed) -- Gor Nishanov

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

Date: 2014-02-25

N3961: A proposal to add shared_mutex (untimed)

by Gor Nishanov

Excerpt:

At the Issaquah ISO C++ meeting of 2014 shared_mutex was renamed to shared_timed_mutex per proposal N3891 to follow the naming precedent set by timed_mutex and recursive_timed_mutex and to leave room for an untimed shared_mutex which can be more efficient on some platforms than shared_timed_mutex.

This paper introduces shared_mutex without timed locking requirement. This paper only includes the proposed wording. For background for shared locking please refer to N3568, N3659 and N3891.

N3949: Scoped Resource - Generic RAII Wrapper for the Standard Library -- P Sommerlad, A L Sandoval

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

Date: 2014-02-28

Scoped Resource - Generic RAII Wrapper for the Standard Library

by Peter Sommerlad and Andrew L. Sandoval

Excerpt:

This proposal introduces a new RAII "smart" resource container called unique_resource_t which can bind a resource to "clean-up" code regardless of type of the argument required by the "clean-up" function.

...

4 Acknowledgements

  • This proposal incorporates what Andrej Alexandrescu described as scope guard long ago and explained again at C++ Now 2012 ().
  • This proposal would not have been possible without the impressive work of Peter Sommerlad who produced the sample implementation during the Fall 2013 committee meetings in Chicago. Peter took what Andrew Sandoval produced for N3677 and demonstrated the possibility of using C++14 features to make a single, general purpose RAII wrapper capable of ful lling all of the needs presented by the original 4 classes (from N3677) with none of the compromises.
  • Gratitude is also owed to members of the LEWG participating in the February 2014 (Issaquah) and Fall 2013 (Chicago) meeting for their support, encouragement, and suggestions that have led to this proposal.
  • Special thanks and recognition goes to OpenSpan, Inc. (http://www.openspan.com) for supporting the production of this proposal, and for sponsoring Andrew L. Sandoval's rst proposal (N3677) and the trip to Chicago for the Fall 2013 LEWG meeting. Note: this version abandons the over-generic version from N3830 and comes back to two classes with one or no resource to be managed.
  • Thanks also to members of the mailing lists who gave feedback. Especially Zhihao Yuan, and Ville Voutilainen.  Special thanks to Daniel Krügler for his deliberate review of the draft version of this paper (D3949).

 

N3956: ISO/IEC CD 14882, C++ 2014, Responses to National Body Comments -- Barry Hedquist

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.

Note: This document summarizes the responses to all national comments in last year's CD ballot for C++14, which ballot resolution was completed this month at the Issaquah meeting. C++14 is now about to go out for its next ballot stage, DIS (Draft International Standard).

Document number: N3956

Date: 2014-02-24

ISO/IEC CD 14882, C++ 2014, Responses to National Body Comments

by Barry Hedquist

Excerpt:

Attached is a complete set of the WG21 Responses to National Body Comments in response to the SC22 Ballot for ISO/IEC CD 14882, Committee Draft of the revision of ISO/IEC 14882:2011, aka C++ 2014.

N3939: Extending make_shared to Support Arrays, Revision 2 -- Peter Dimov, Glen Fernandes

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

Date: 2014-02-17

Extending make_shared to Support Arrays, Revision 2

by Peter Dimov and Glen Fernandes

Excerpt:

This paper proposes adding array support to make_shared, via the syntax make_shared<T[]> and make_shared<T[N]>.

This revision of N3870 removes the scalar T&& overloads, reflecting the result of the LEWG review.

Trip report: Winter ISO C++ meeting

The winter 2014 WG21 (ISO C++) meeting was held in Issaquah, WA, USA on February 10-15. Many thanks to Microsoft for hosting us!

The major work of this meeting was to complete processing of the national body comments received in last summer’s comment ballot for the upcoming C++14 standard. We also began comment processing for the recent corresponding ballot for the File System Technical Specification (TS).

Below are some highlights from this week’s meeting.

C++14: We’re done! (we think)

Some history for perspective:

  • In November 1997, the ISO C++ committee unanimously approved the final text of the first C++ standard. After final ISO balloting, this was published as C++98.
  • In March 2011, we unanimously approved the final text of the second C++ standard, balloted and published later that year as C++11.

On Saturday, we unanimously approved what we believe will be the final text of the third C++ standard, which we expect to become C++14 later this year. This is a huge milestone for C++! And compiler vendors are already scrambling over each other to be the first to ship a fully conforming C++14 implementation -- possibly while the final C++14 ballot is still in progress, which has never happened before.

Note: The upcoming five-month DIS (Draft International Standard) ballot is expected to be the final ISO ballot for C++14. If there are any national objections to the DIS, then there will be one additional FDIS (Final Draft International Standard) ballot stage at the end of this year. However, the national bodies tell me that, barring last-minute surprises, they will likely agree on the DIS contents we just approved on Saturday; in that case the FDIS step will not be required and we would be able to proceed directly to publication later this summer.

For those interested, here are the main (albeit small) changes approved this week as the final set of tweaks for C++14:

I want to say a hearty THANK YOU AGAIN to everyone who has worked so hard, not only on completing C++14, but on bringing it in at such high quality. We had very clean CD ballot with a far lower number of change/bugfix requests than the C++0x/11 ballots, and it’s probably fair to say that today our C++ working paper is in better shape than ever.

Thank you again to everyone on the committee, those who participated via national bodies, and those who gave great feedback and help via the std-discussion and std-proposals groups, for making this possible! This is a really outstanding achievement.

But that’s not all, because we also made progress on other fronts as well...

TS Progress: A lot more is happening

In addition to completing (we hope) C++14, we also made progress on all seven of the TS projects, and approved the creation of one more. Here’s a quick overview of what we accomplished last week, and some notes about what to expect possibly at our next meeting this June in sunny Rapperswil, Switzerland.

The File System TS (GitHub) worked through most of its ballot comments and is expected to complete its ballot resolution in Rapperswil, where we expect to complete the TS and approve sending it out for its final DTS ballot.

The Networking TS material we have so far was approved to instead be added directly to the Library Fundamentals TS (see N3783 below).

The Library Fundamentals TS (GitHub) had a number of additions and is expected to be in shape for its PDTS ballot after Rapperswil. Here is a quick look at what was added to Fundamentals -- follow the links for the details of each paper:

The Array TS working paper was approved, and though we didn’t vote anything more into it at this meeting, LEWG considered additional material that is in good shape to be expected to be added to the Array TS in Rapperswil, including multidimensional array_view and indexes.

The Concepts, Parallelism, and Concurrency TSes had content approved to be turned into initial working papers. Between meetings, the project editors will work on producing formal working papers, which we will consider adopting as TS working papers at the beginning of our next meeting in Rapperswil. One or two of those might even be approved for PDTS ballot following Rapperswil! The initial TS contents are:

Finally, we decided to further expand our workload: We approved asking for a Transactional Memory TS New Work Item (New Project ballot) based on N3919, “Transactional Memory Support for C++.” In Rapperswil we hope to have a paper with wording that we can consider approving to turn into an initial working paper between Rapperswil (June) and Urbana-Champaign (November).

Conclusion

WG21 has now shipped out documents for ballot in the last three consecutive ISO C++ meetings, and the plan is for this to continue. We have been filling up our pipeline, and now we're seeing work come out the other end at a brisk pace.

After the long and "working relatively invisibly" period of C++0x, it's very interesting to see ISO C++ now in a mode where "shipping something out for ISO ballot" is becoming the normal outcome of every meeting. Thanks again to all the volunteers who make it possible! And stay tuned for more to come throughout this year...

N3919: Transactional Memory Support for C++ -- Victor Luchango, Michael Wong, et al.

Note: This paper was approved on Saturday at the Issaquah WA USA ISO C++ meeting as an indication of content for a new Transactional Memory Technical Specification.

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

Date: 2014-02-14

Transactional Memory Support for C++

by Victor Luchango, Michael Wong, et al.

Excerpt:

Transactional memory supports a programming style that is intended to facilitate parallel execution with a comparatively gentle learning curve. This document describes a proposal developed by SG5 to introduce transactional constructs into C++ as a Technical Specification. It is a revision of N3718, an earlier document with the same title, presented at the September 2013 meeting in Chicago. However, this document is selfcontained, and can be read independently of N3718. At the Chicago meeting, we received encouraging and helpful feedback, which we have used to revise this proposal.

This proposal is based in part on the Draft Specification for Transactional Constructs in C++ (Version 1.1) published by the Transactional Memory Specification Drafting Group in February 2012. It represents a pragmatic basic set of features, and omits or simplifies a number of controversial or complicated features from the Draft Specification. Our goal has been to focus SG5’s efforts towards a basic set of features that is useful and can support progress towards possible inclusion in the C++ standard.

In addition to a description of the proposal, this document contains a summary of some of feedback we received at the Chicago meeting and of the discussion within SG5 since that meeting. Unlike N3718, it does not include examples or precise wording changes, as we have not yet revised them to reflect the changes in the proposal since N3718. However, these changes, summarized in Section 2.1, are mostly superficial.