Trip report: Summer ISO C++ standards meeting (Toronto)
来源:互联网 发布:ubuntu怎么进入文件夹 编辑:程序博客网 时间:2024/06/05 01:04
转自 https://herbsutter.com/2017/07/15/trip-report-summer-iso-c-standards-meeting-toronto/
[This post will be updated with additional details as mentioned in the comments section at bottom.]
A few minutes ago, the ISO C++ committee completed its summer meeting in Toronto, Ontario, Canada. We had some 120 people at the meeting, representing nine national bodies. As usual, we met for six days Monday through Saturday, including several evenings.
The following are some highlights of what we achieved this week. You can find a brief summary of ISO procedures here. The main things to note are:
- “IS” means “international standard.” In our case, it’s the core C++ standard itself. Think of this as “trunk.”
- “TS” means “technical specification,” a document separate from the main standard where we can gain experience with new features before putting them into the IS. We have several of these, summarized on the status page. Think of these as “beta branches.”
Note: As I reported in my previous trip report for the winter meeting (Kona 2017), we have already completed our work on C++17, which is now still going through its final ISO approval steps. Nothing we did this week affects C++17, but we did begin work on C++20…
First meeting for C++20
This was the first meeting where we could vote changes into Draft C++20. And we did!
First, the Concepts TS was merged into draft C++20. Yes, Concepts are back in the draft international standard and better than C++0x, which makes the famous concepts feature (principally driven by Bjarne Stroustrup, Gabriel Dos Reis, and Andrew Sutton) the first major language feature voted into draft C++20. Recall that Concepts was published as a separate TS two years ago, and available in GCC; today we voted to adopt nearly of it, except only the “introducer syntax” and “terse/natural syntax” for now because that syntax still has a handful of remaining issues that don’t have consensus, but it’s close and Evolution also voted unanimously to aggressively pursue adding the terse syntax as soon as possible once those design questions can be addressed. A few specific Concepts changes were also approved along with the merge, notably removing the need to write “bool” and removing function concepts until we see a need to overload concepts.
Here are some other features that were added to C++20 at this meeting. Note: These links currently find the most recent pre-meeting papers and so may not reflect the exact wording adopted at the meeting, but the links will light up to the post-meeting versions of the papers that were actually adopted as soon as those are available in the post-meeting mailing about three weeks from now.
- Allow lambda capture [=, this]. Mostly a style issue, but it extends the legal syntax for C++17’s capture of “this” so that programmers can write this stylistically if they want to be explicit in their code.
- Add designated initializers. Draft C++20 now allows code like: struct A { int x; int y; int z; }; A b{.x = 1, .z = 2};
- Allow template parameter lists on lambdas. For example: auto f = []<typename T>(std::vector<T> vector) { /*…*/ };
One TS sent for its ISO ballot, three TSes completed to be published
We also spent quite a bit of the week working on three TSes that completed their review ballots, and sending out one more: The Modules TS is sent out for its comment and approval (PDTS) ballot. And the Coroutines TS, Networking TS, and Ranges TS are all done, as the groups worked hard to process and address all the comments from their ballots and we are sending them out for final publication. – It’s not every meeting that we publish three specifications! Some of them would have been handled at our last meeting, but we were busy finishing C++17 so they stacked up for this meeting.
Thank you very much again to all the volunteers who helped progress our proposals, send out our PDTSes, address our ballot comments and publish three (3) TSes, and get the C++20 cycle off to a roaring start.
Other progress
We considered merging one other published TS, the Concurrency TS. The feeling was that its three major features were in different stages of readiness, and some are advancing toward bring merged into C++20, possibly at our next meeting:
- atomic_shared_ptr<T> is on track to be merged into C++20 with changes, in detailed standardese wording review and expected to be put up for approval at our next meeting. Interestingly, some of the changes are to make it more like the original design I proposed, including to name it atomic<shared_ptr<T>>.
- Latches are also approved, essentially as-is, and the feature is in wording review for the next meeting.
- Barriers are also potentially on track for C++20 but SG1 is still discussing open design problems. Its design can be expected to change substantially from the TS version.
- Some minor pieces of the future extensions are moving ahead, but the extension has several unresolved design issues including to coordinate with the (we hope soon-coming) executors design.
Other items making progress for possible consideration to be adopted in the fall meeting:
- The first part of compile-time reflection is in wording review.
- The library groups are starting to remove deprecated features.
The Library Evolution group has started discussing at how to integrate modules and contracts into the standard library. They expect to start integrating concepts next meeting, which is a big benefit of getting a major feature merged early in the C++20 cycle. They are also actively working on Unicode support, several new containers, and a date library, among other things.
We also continued incubating other work. In particular, the Reflection study group had presentations, and gave direction and feedback, on a few additions to the static reflection proposal that is already progressing in the main subgroups, the compile-time programming proposal, and my new metaclasses paper. (I’ll post a separate report on the metaclasses part soon, probably in the next week or so, with a link to the ACCU video.)
What’s next
In my trip report last fall, two meetings ago, I wrote: “Then, once C++17 ships next year and possibly as soon as our July meeting, I expect we’ll start looking at merging more of the TS ‘beta branches’ into the C++ ‘trunk.’”
Well, that’s exactly what happened: We did finish C++17 at the next meeting, and now at the meeting after that we did merge our first major TS into the C++ trunk.
Here’s an updated snapshot of our status (the latest is always on the isocpp.org/std/statuspage):
Thank you again to the 120 experts in Toronto this week, and the many more who participate in standardization through their national bodies! Have a good summer – and see you at CppCon!
- Trip report: Summer ISO C++ standards meeting (Toronto)
- Trip Report: June 2008 ISO C++ Standards Meeting
- Summer Trip
- 【Summer Seminar BMIE】Week_1 Report
- CSDN Summer of Code 2014 Report #2: Setup C/GTK+ development environment with Emacs
- C Coding Standards
- C and UNIX Standards
- SPOJ-IAPCR2F Summer Trip(dfs/并查集)
- Process Improvement with CMMI® v1.2 and ISO Standards
- Multimedia Standards Introduction——标准发布之ISO MPEGx
- ISO C
- standards
- CF 421C Online Meeting
- meeting
- Meeting
- Meeting
- meeting
- BUPT Summer Journey #test1 C
- 【Shell】网络利器之 curl
- Win 7 用虚拟机安装Ubuntu系统
- ubuntu ssh使用详解
- HDU 2141 详解
- 金融风控-->申请评分卡模型-->特征工程(特征分箱,WOE编码)
- Trip report: Summer ISO C++ standards meeting (Toronto)
- css基础样式
- 实验 9-1 1. 实现以下功能 a) 调用 pipe()创建无名管道 b) 调用 fork 创建一个子进程 c) 在子进程中向管道内写入 128k 数据,打印出进程号及成功写入的字节数 d) 在父
- 死锁的四个必要条件
- EMC的一个笔试题目
- Linux下RTC驱动的简单分析
- ★实验 9-2 1.补全代码,实现以下功能 a)调用pipe()创建无名管道 b)调用fork创建一个子进程 c)在父进程中向管道写入 “helloworld”, 同时打印出PID和写入
- Gradle for Android-高级Build和自定义
- ★实验9-3 1.用不同的方案实现两个命令的连接,例如 “who|sort”、“ps aux | grep init” 源程序: #include <stdio.h> #include <sys