ISO/IEC JTC1 SC22 WG21 N4558 - 2015-11-16
Jonathan Wakely, firstname.lastname@example.org
WG21 Meeting No. 62
October 19-24, 2015 – Kona, HI, USA
Chair: Clark Nelson
Nelson called the meeting to order at 08:35 and handed over to Plum for the welcome from the host.
Every participant is responsible for understanding and abiding by the INCITS Antitrust Guidelines and Patent Policy and the ISO Code of Conduct.
The voting rights and PL22.16 procedures were reviewed.
Seven ISO “P” members were represented, Canada, Finland, Netherlands, Spain, Switzerland, UK and US. One “O” member was represented, Slovenia.
N4545 was unanimously approved as the agenda.
|Document||Editor’s report||Prospective working draft|
|Library Fundamentals V2 TS||N4530||N4529|
The working drafts N4527, N4529, and N4553 were unanimously approved.
Tong queried whether N4554 and N4553 were in the mailing. Nelson explained that they are in LiveLink with the correct N numbers, but a WD was initially published as a P document in the mailing and then corrected.
|WG21 Concepts ballot resolution telecon||N4548|
|WG21 pre-Kona administrative telecon||N4556|
Clow moves to accept the minutes, Spicer seconds.
Tong requests modifications to N4548. Orr responded that he took the minutes, and noted the corrections, but would not publish a revision until he knew of any other corrections to be made.
The minutes were unanimously approved.
See minutes of pre-meeting telecon, N4556
Miller reported that Core would follow the usual procedure, prioritizing papers due for review, also processing issues between processing papers.
Voutilainen reported that Evolution had a full agenda, posted on the Evolution wiki. THe group would be focussing on the major featues for C++17.
Clow reported that library would follow the usual agenda, prioritizing issues and papers. Would be spending time on Networking and Ranges proposals. Expected a substantial list of issues to move to DRs at the end of the meeting, which could be found on the wiki prior to a paper being produced at the end of the week.
Yasskin reported that Library Evolution had about 60 papers and so probably wouldn’t get through them all. LEWG planned to use the same workshop format as in Lenexa.
Sutter summarized the procedures and schedules for publishing IS and TS, and what can make the deadline for C++17..
Voutilainen didn’t want a discussion in plenary, but some guidance from the group on whether Concepts can realistically be included in C++17.
Sutter took a poll to determine how many people would be comfortable putting Concepts into some standard without using Concepts in the library. About 40 in favor, 10 against.
Perchik asked whether it could be conditionally-supported. Sutter said that is the kind of topic to be discussed in Evolution not plenary.
No new business.
Sutter noted it was three years since the foundation of the C++ Foundation. The annual members' meeting was scheduled to take place on Friday, followed by the directors meeting.
Maurer took approximate numbers for the different groups and assigned rooms. Evening sessions were scheduled to begin at 19:30
The WG and SG chairs must arrange for any proposals to be written up in the form of a motion, and made available by 2:30 Friday.
The host was thanked.
Wong reported that the TS has been published and is on the ISO site. The group is working on additional features, and expect to have a paper at the next meeting. They continue to meet. They are working on interactions with coroutines and other proposals.
Wong also reported that GCC has an implementation of the TS (except for the library parts).
Crowl reported that the group reviewed three small papers and passed two on. They have completed and approved an outline for a TS: - Built-in types: update decimal float. Parametric type aliases. - Utilities: Overflow-detecting arithmetic, double-wide arithmetic. - Multi-precision arithmetic. - Bitwise operations. - Rounding and overflow: rounding modes, overflow modes, limiting, division, scaling. - Unbounded types: integers, bits, rational, probably floating-point - Bounded: signed/unsigned integers, fixed-point - Promotion: functions to promote to and demote from unbound types, and explicit conversions.
Orr asked if there was any sense of a timescale. Crowl said the plan is for anyone with a proposal to bring wording suitable for a draft TS at the next meeting.
Carruth had little to report. The group did not meet but some discussions took place. Hope to have some new papers for Jacksonville or the following meeting.
Sutter asked whether anything is expected to come to EWG or whether still in the exploration phase. Carruth replied that there are papers working through core and library. They are also trying to make progress on a paper that was rejected by EWG.
Nelson explained that SD-6 describes recommendations for feature-testing macros. It is updated on a yearly basis, tracking the standards. What is in SD-6 will never go into a standard, but Technical Specifications do specify their feature-test macros, because a TS is always optional. When the content of a TS moves into the standard the feature-test macro will move to SD-6 instead of the standard.
He requested again that proposal authors and working groups consider feature-test macros during review.
Carruth said that feature-test macros are not making much difference today, but the hope is that they will be useful in the future when using (what will then be) legacy compilers.
Yasskin said that LEWG looks for feature-test macros and requests authors to add them, but doesn’t always notice if they are missing. Dos Reis asks whether a proposal might be rejected without one. Van Eerd says the group might reject for any reason.
Nelson held a straw poll to determine the sense of the committee.
Should WG21 encourage, but not require, feature-test macros for proposals?
Van Eerd asked how that would be enforced and Nelson replied that it wouldn’t be.
Voutilainen apologised for not asking any authors to provide macros during the meeting.
Dos Reis reported that SG12 met and went through some issues.
They received direction from EWG to remove undefined behavior from the
preprocessor (clauses 2 and 16).
They also looked at a paper from the pre-meeting mailing regarding the
lifetime of objects initialized by
memcpy, and similar issues with
deserialising objects from disk.
Finally, he reported that the group looked at wording being discussed by
Core for defining what an object is.
Giroux said that SG1 is concerned about trivially-copyable being used for synchronisation types. Dos Reis said that is not something SG12 looked at. Merrill reported that Core looked at it and are fixing it.
Wong reported that a number of papers were reviewed, with comments being sent to the authors, and that there was an evening session on the kind of problems the sector faces. The group is continuing to hold telecons and will be meeting face-to-face at GDC, where Sony are providing a room.
Sutter asked how many people attended the session at CppCon. Wong said there were about 60 people present, which might grow to 75-100 at GDC.
Wong said that the study group name attracts interested people.
Sutter requested others to approach him if they know of other domains where this approach would help.
Boehm began by clarifying the status of the Technical Specifications,
explaining that the Parallelism TS v1 is done.
He reported that the group spent longer than expected doing ballot
resolution for Concurrency TS v1. One piece of controversy
atomic_shared_pointer which uncovered
a related issue in the compare_exchange in C++ IS. He explained that the
Concurrency TS has latches and barriers, extensions for futures,
The group have started talking about v2 of both of those Technical Specifications and requested a new work item for Parallelism v2, to include the content of v1 and task blocks. Some other things are also expected, such as something on SIMD support. There are plans for Concurrency TS v2, but no new work item needed yet. There are hopes for Executors to be in that, but making little progress. Other things worked on include synchronic, and atomic views for accessing non-atomic objects atomically. The group would like counters and queues to make progress.
SG1 were also progressing some things directly to C++17, following strong SG1 consensus for adding Parallelism TS v1 to C++17, but that didn’t make it through the working groups yet.
There was discussion in SG1 about relying on thread-locals for numeric error modes. Also discussion of GPUs, resulting in a general feeling that WG21 should not be defining a subset of C++ for use on GPUs, but there might need to be some special rules for how it can be done efficiently.
Josuttis asked what will go into C++17. Boehm said there are a number of small items expected to go in, and people are hoping that some of Concurrency TS v1 will go in.
Voutilainen reported that EWG got through almost all papers, approved modules to go into a TS, worked out some coroutine design issues, and looked at some Concepts design issues arising from NB comments on the TS. The group dealt with all major items on the schedule. They didn’t look at any EWG issues, but there are papers addressing some of them.
Voutilainen thanked Naumann and Sankel for success with
EWG approved inline variables; exception specifications in the type system;
feature-testing preprocessor predicates; Constexpr lambdas; unified call
Discussion of expression evaluation order will resume in Jacksonville.
Voutilainen reported that C++ will have a
Stroustrup stated that reaching consensus on unified call syntax was made possible by a session at CppCon to resolve disagreements.
Voutilainen noted that there were some rejected papers, the authors were encouraged to continue work.
Andrew Pardoe was thanked for taking notes for the majority of the EWG sessions, and James Dennett was thanked for covering the remainder of the sessions.
Josuttis queried the outcome of the discussion into what should go into C++17. Sutter said that individual features will be evaluated based on proposals. The major purpose of the discussion was to make people realise it was time to think about what can go in. A proposal is expected in Jacksonville to put Concepts in C++17.
Yasskin reported that LEWG covered about 37 papers, rejected about 8, and forwarded 15 to library. The group started looking at some library issues in the LEWG issues list, but only prioritised them. They didn’t get time to cover 13 of the papers in the mailing, but covered the ones that were determined to be most important by the poll taken before the meeting.
Thanked Juan Alday and Thomas Koeppe for taking notes.
Miller recapped the new procedures which mean that the full issues lists are no longer included in the mailing, to reduce the size of the mailing. Issues lists continue to be posted on the committee web-site and the committee version with drafting assignments gets attached to the meeting wiki.
Miller explained that Core motions to resolve issues go in a new P-numbered paper that contains only the issues being resolved, consisting of “Tentatively ready” issues that are a product of teleconferences between meetings and “Ready” issues produced by CWG deliverations at the preceding meeting. The documents with only the issues being resolved are sent out in the mailings.
Core spent some time during the meeting on issue processing, with 15 resolutions approved and in Ready status for Jacksonville, 26 in “Tentatively Reade” state, and with 59 new issues, half triaged so far.
Core also reviewed several proposals, approving removing the
removing increment for
bool, and exception specifications in the type system.
Josuttis asked whether the exception specifications change will break any code. Maurer pointed to an example in Annex C in the proposal, P0012. Voutilainen claimed it has the potential to break fairly obscure code.
Yasskin raised a concern about the liberty implementations have to add
noexcept to functions and whether that can break anything. Voutilainen
asserted no. Crowl said it does present some portability problems, if you
have a pointer to a
noexcept function you can set it to point to a library
function on one implementation and not another. Stroustrup confidently
predicted problems with this. Carruth stated that this makes it easier for
users to detect which library functions are
noexcept, but that is already
possible using SFINAE. Dos Reis pointed out the inconsistency between
giving libraries permission to add
noexcept but not to add
said this creates problems for programmers.
Meredith said the kind of code that has problems already has problems, that
this specific paper does not create any new problems.
Spicer gave reassurance that only esoteric examples get problems and that the common cases behave the same as in C++11. It took Core a long time to come up with an example that wasn’t already invalid according to the standard anyway.
Miller continued, reporting that Core also approved
a name for NSDMI,
reworded inheriting constructors (which will resolve 8 core issues),
and removed defaults for unary folds.
Core were very close to approving aggregate initialization with base classes,
only missing some wording for Annex C describing the change.
They spent time reviewing the specification for coroutines, which needed
some wording changes. They looked at wording for forward progress guarantees.
They spent a good deal of time looking at issues of what objects are,
what pointers are, getting close to a resolution but needing more work in
Jacksonville. They looked at an
enum extension for integer classes.
They also looked at defining order of evaluation, and are working with EWG on that. Core planned to look at the Modules proposal on the Saturday and expect
to have at least one teleconference looking at modules, tentatively scheduled
for early December.
Sutter thanked Core for holding teleconferences between meetings to help authors with their proposals.
Halpern asked whether the fix for trivially-copyable is being moved today. Miller said that will be Ready in Jacksonville. Maurer said it is issue 1734.
Straw poll, CWG Motion 1, Move to accept as Defect Reports the issues in P0164 and apply their proposed resolutions to the C++ working paper.
CWG Motion 1 was approved by unanimous consent.
Straw poll, CWG Motion 2, Move to apply to the C++ working paper the proposed wording in P0001R1 (“Remove Deprecated Use of the register Keyword”).
CWG Motion 2 was approved.
Straw poll, CWG Motion 3, Move to apply to the C++ working paper the proposed wording in P0002R1 (“Remove Deprecated operator++(bool)”).
Brown asked what was different between revisions 0 and 1. Meredith said there was an improvement to the Annex C entry and removal of a note that referred to the operation.
CWG Motion 3 was approved.
Straw poll, CWG Motion 4, Move to apply to the C++ working paper the proposed wording in P0012R1 (“Make exception specifications be part of the type system, version 5”).
CWG Motion 4 was approved.
Straw poll, CWG Motion 5, Move to apply to the C++ working paper the proposed wording in P0061R1 (“__has_include\ for C++17”).
CWG Motion 5 was approved.
Straw poll, CWG Motion 6, Move to apply to the C++ working paper the proposed wording in P0134R0 (“Introducing a name for brace-or-equal-initializers for non-static data members”).
CWG Motion 6 was approved by unanimous consent.
Straw poll, CWG Motion 7, Move to apply to the C++ working paper the proposed wording in P0136R1 (“Rewording inheriting constructors (core issue 1941 et al)”).
CWG Motion 7 was approved by unanimous consent.
Straw poll, CWG Motion 8, Move to apply to the C++ working paper the proposed wording in P0160R0 (“Wording for removing defaults for unary folds”).
Voutilainen said this is a step in the wrong direction that makes unary folds inconvenient to use.
Stroustrup said this removes some poor defaults without offering a replacement.
Sutter determined that there was strong opposition from National Bodies (FI and SP) and only weak support.
CWG Motion 8 was withdrawn.
Clow reported that LWG looked at Ranges and Networking extensively.
Also looked at some things not being brought forward at the meeting
variant and synchronous ostreams.
Five or six papers were not reached in time. Clow thanked the LWG scribes.
Like Core, LWG did not include issues lists in the mailings. P0165 contains the library issues that were moved at the meeting.
Straw poll, LWG Motion 1, Move we apply the resolutions of the following issues in “Ready” status from P0165R0 to the C++ Working Paper.
LWG Motion 1 was approved by unanimous consent.
Straw poll, LWG Motion 2, Move we apply the resolutions of the following issues in “Tentatively Ready” status from P0165R0 to the C++ Working Paper:
Voutilainen noted that 2510 is a breaking change. Merrill said that Core reversed position on CWG 1518 and Wakely and Voutilainen stated that that resolves the problem making 2510 redundant. 2510 was dropped from the motion.
LWG Motion 2 was approved by unanimous consent.
Straw poll, LWG Motion 3, Move we apply to the C++ Working Paper the Proposed Wording from P0004R1, Remove Deprecated iostreams aliases.
LWG Motion 3 was approved by unanimous consent.
Straw poll, LWG Motion 4, Move we apply to the C++ Working Paper the Proposed Wording from P0006R0, Adopt Type Traits Variable Templates for C++17.
LWG Motion 4 passed.
Straw poll, LWG Motion 5, Move we apply to the C++ Working Paper the Proposed Wording from P0092R1, Polishing
Carruth asked what the motivation was. Hinnant explained that these offer alternative rounding modes for durations. Carruth was concerned about tick-based programming relating to dates or timezones. Hinnant said there is no way to talk about timezones in the standard and this only applies to durations and time points.
Halpern stated that date rounding can already happen, so offering other modes doesn’t make this any worse.
Carruth said that given these facilities, most people will do the wrong thing.
LWG Motion 5 passed.
Van Eerd asked whether given a future date library Carruth’s concerns would go. Carruth responded that it wouldn’t make the problem go away.
Straw poll, LWG Motion 6, Move we apply to the C++ Working Paper the Proposed Wording from P0007R1, Constant View: A proposal for a std::as_const helper function template.
Meredith explained that the revised proposal added a deleted overload to prevent unwanted lifetime extension of temporaries.
LWG Motion 6 was approved by unanimous consent.
Straw poll, LWG Motion 7, Move we apply to the C++ Working Paper the Proposed Wording from P0156R0, Variadic lock_guard(rev 3).
LWG Motion 7 was approved by unanimous consent.
Straw poll, LWG Motion 8, Move we apply to the C++ Working Paper the Proposed Wording from P0005R2, Adopt not_fn from Library Fundamentals 2 for C++17 and remove not1 & not2.
Van Eerd asks whether
not2 are currently deprecated. They are not,
but Meredith responds that the names remain reserved so that implementations
can continue to provide them.
Vandevoorde asked whether
not2 are dangerous. Lavavej said they
are not dangerous, just not useful in generic code.
A comparison to
auto_ptr was made, pointing out that they were
deprecated first. Meredith said code broken by this will probably be broken
anyway by the removal of the typedefs for the result and argument types.
Carruth stated that we must not be paralysed by fear of change, even when that change might break code.
Orr reported that the UK is against removal without deprecation.
LWG Motion 8 was withdrawn.
Straw poll, LWG Motion 9, Move we apply to the C++17 working paper the Proposed Wording from p0074r0, Making std::owner_less more flexible
LWG Motion 9 was approved by unanimous consent.
Straw poll, LWG Motion 10, Move we apply to the C++17 working paper the Proposed Wording from P0013R1, Logical type traits rev 2
Spicer announced that the document P0013R1 was updated during the session to fix a typo in the document number.
Wakely explained that the paper was revised to change the names and was originally proposed for the TS only.
LWG Motion 10 passed.
Straw poll, LWG Motion 11, Move we apply the resolution of the following issue in “Ready” status from P0165R0 to the Library Fundamentals TS 2 Working Paper
LWG Motion 11 was approved by unanimous consent.
Straw poll, LWG Motion 12, Move we apply the resolution of the following issue in “Tentatively Ready” status from P0165R0 to the Library Fundamentals TS 2 Working Paper
LWG Motion 12 was approved by unanimous consent.
Straw poll, LWG Motion 13, Move we apply to the Library Fundamentals TS 2 Working Paper the Proposed Wording from n4531,
std::rand replacement, revision 3.
It was clarified that this does not touch
LWG Motion 13 was approved by unanimous consent.
Straw poll, LWG Motion 14, Move we apply to the Library Fundamentals TS 2 Working Paper the Proposed Wording from P0013R1, Logical type traits rev 2
Spicer noted that the paper was renamed from P0013R2 to P0013R1
LWG Motion 14 was approved by unanimous consent.
Straw poll, LWG Motion 15, Move we apply to the Concurrency TS Working Paper the Proposed Wording from P0159R0, Programming Languages — Technical Specification for C++ Extensions for Concurrency.
LWG Motion 15 passed.
Straw poll, LWG Motion 16, Move to appoint an editing committee composed of Artur Laksberg, Hans Boehm, and Marshall Clow to approve the correctness of the Technical Specification for C++ Extensions for Concurrency working paper as modified by the motions approved at this meeting, and to direct the Convener to transmit the approved updated working paper for publication.
LWG Motion 16 was approved by unanimous consent.
Straw poll, LEWG Motion 1, Move to create a working paper for the Networking TS with P0112R1 “Networking Library” as its initial content.
Maurer asked why it was not being sent for PDTS. Clow said there had been some new design questions come up.
LEWG Motion 1 was approved by unanimous consent.
Straw poll, LEWG Motion 2, Move to direct the Convener to request a New Work Item for a Technical Specification on C++ Extensions for Ranges and create a working paper with P0021R0 “C++ Extensions for Ranges” as its initial content.
LEWG Motion 2 was approved by unanimous consent.
Straw poll, LEWG Motion 3, Move to direct the Convener to request a New Work Item for a Technical Specification for C++ Extensions for Parallelism Version 2 and create a working paper with N4505 “Working Draft, Technical Specification for C++ Extensions for Parallelism” as modified by the Proposed Wording from p0155r0, Task Block R5, as its initial content.
LEWG Motion 3 was approved by unanimous consent.
Straw poll, LEWG Motion 4, Move to direct the Convener to request a New Work Item for a Technical Specification on C++ Extensions for Library Fundamentals, Version 2 and create a working paper with N4529 as amended by the motions approved at this meeting as its initial content, and appoint an editing committee composed of Jeffrey Yasskin, Daniel Krügler, and Marshall Clow to approve the correctness of the working paper, and to direct the Convener to transmit the approved updated working paper for PDTS ballot.
LEWG Motion 4 was approved by unanimous consent.
Nelson opened the session at 13:00.
No new information was brought forward. The results of the polls taken on Friday were approved by consent.
2016-02-29/03-05 Jacksonville, FL/US (N4555)
2016-06-20/06-25 Oulu, Finland
Fall meeting in the US. Late February / early March meeting. Likely to be in the San Diego area and Oklahoma, in some order.
Tentatively Summer 2017 in England.
Post-meeting mailing: Nov 6
Pre-meeting mailing: Feb 12
Brown moves to thank the host, officers, convener, SG chairs, the scribes, and the project editors.
Clow moves to adjourn, Stroustrup seconds. Unanimous.
Official PL22.16 or WG21 status (“P”, “A”, “E”, “M”)
The column “WG21” designates official PL22.16 or WG21 status (“P”, “A”, “E”, “M”)
The column “PL22.16” indicates organizations eligible to vote by “V”.
An “x” marks a day attended, for days unattended, the field is blank.
|Company / Organization||NB||Representative||Mo||Tu||We||Th||Fr||Sa||WG21||PL22.16|
|Brown||Walter E. Brown||x||x||x||x||x||x||E|
|CERT Coordination Center||Aaron Ballman||x||x||x||x||x||x||P||V|
|Cisco Systems||Lars Gullik Bjønnes||x||x||x||x||x||x||P||V|
|Edison Design Group||John H. Spicer||x||x||x||x||x||x||P||V|
|Edison Design Group||Daveed Vandevoorde||x||x||x||x||x||x||A|
|Edison Design Group||Jens Maurer||x||x||x||x||x||x||A|
|Edison Design Group||Mike Herrick||x||x||x||x||x||x||A|
|Edison Design Group||William M. Miller||x||x||x||x||x||x||A|
|Embarcadero Technologies||Dawn Perchik||x||x||x||x||x||x||P||V|
|FlightSafety International||Billy Baker||x||x||x||x||x||x||P||V|
|NL||JC van Winkel||x||x||x||x||x||x|
|IBM||Paul E. McKenney||x||x||x||x||x||x||A|
|KCG Holdings||Robert Douglas||x||x||x||x||x||x||P||V|
|Lawrence Livermore||James Frederick Reus||x||x||x||x||x||x||A||V|
|Los Alamos National Laboratory||Li-Ta Lo||x||x||x||x||x||x||P|
|Microsoft||Gabriel Dos Reis||x||x||x||x||x||x||A|
|Microsoft||Stephan T. Lavavej||x||x||x||x||x||x||A|
|Morgan Stanley||Bjarne Stroustrup||x||x||x||x||x||x||P||V|
|Plum Hall||Thomas Plum||x||x||x||x||x||x||P||V|
|Plum Hall||FI||Ville Voutilainen||x||x||x||x||x||x||A|
|Programming Research Group||Christof Meerwald||x||x||x||x||x||x||A||V|
|Red Hat||Jason Merrill||x||x||x||x||x||x||P||V|
|Red Hat||UK||Jonathan Wakely||x||x||x||x||x||x||A|
|Ripple Labs||Howard E. Hinnant||x||x||x||x||x||x||A||V|
|Riverbed Technology||Oleg Smolsky||x||x||x||x||x||x||P||V|
|Sandia National Labs||Carter Edwards||x||x||x||x||x||x||P||V|
|Stellar Science||David Sankel||x||x||x||x||x||x||P||V|
|University of Chicago||Chanaka Liyanaarachchi||x||x||x||P||V|
|Company / Organization||NB||Representative||Mo||Tu||We||Th||Fr||Sa||WG21|
|Blackberry||CA||Tony Van Eerd||x||x||x||x||x||x||M|
|Universitè de Sherbrooke||CA||Patrice Roy||x||x||x||x||x||x||M|
|Vollmann Engineering||CH||Detlef Vollmann||x||x||x||x||x||x||M|
|University Carlos III||ES||J. Daniel García||x||x||x||x||x||x||M|
|JSI, Slovenia||SI||Matevz Tadel||x||x||x||x||x||x||M|
|PDT Partners||UK||Jeff Snyder||x||x||x||x||x||x||M|
|Company / Organization||Representative||Mo||Tu||We||Th||Fr||Sa|
|LTK Engineering||Alan Talbot||x||x||x||x||x||x|
|Sony Computer Entertainment||Alex Rosenberg||x||x||x||x||x||x|
|University of Akron||Andrew Sutton||x||x||x||x||x||x|
|Berkeley Lab||Bryce Lelbach||x||x||x||x||x||x|
|Coverity by Synopsys||Charles-Henri Gros||x||x||x||x||x||x|
|Thomson Reuters||James Touton||x||x||x||x||x||x|
|University of Nice||Jean-Paul Rigault||x||x||x||x||x||x|
|Xalnix Corp.||Les Potter||x||x||x||x||x||x|
|Roundhouse Consulting||Pete Becker||x||x||x||x|