Doc No: SC22/WG21/N2920 PL22.16/09-0110 Date: 2009-08-01 Project: JTC1.22.32 Reply to: Robert Klarer IBM Canada, Ltd.

Minutes of WG21 Meeting, July 13, 2009

1. Opening activities

Clamage called the meeting to order at 09:00 (UTC+1) on Monday, July 13, 2009

The following countries were represented:

1.1 Opening comments

Maurer described the arrangements and facilities for the meeting on behalf of Interactive Data Managed Solutions AG.

1.2 Introductions

Clamage had the attendees introduce themselves.

1.3 Meeting guidelines (Anti-Trust)

Clamage reviewed the patent disclosure rules.

The following materials were displayed without any further interpretation or discussion:

1.4 Membership, voting rights, and procedures for the meeting

Clamage reviewed the rules for membership and voting rights.

1.5 Agenda review and approval

Clamage presented the agenda (document PL22.16/09-0014 = WG21/N2824).

Proposed amendment to agenda: discuss scheduling of concepts discussion under 1.10 New Business.

Motion to approve the agenda as amended:

Mover: Hedquist
Seconder: Sutter

Approved by unanimous consent.

1.6 Distribution of position papers, WG progress reports, WG work plans for the week, and other documents that were not distributed before the meeting.

Each of the Working Group chairs presented their plans for the coming week.

Core Working Group (CWG)

Adamczyk reported CWG status.

Library Working Group (LWG)

Hinnant reported LWG status.

Evolution Working Group (EWG)

Stroustrup reported that EWG would convene to discuss some issues that had been forward from CWG, papers on exception safety and move semantics, a paper on async(), and concepts.

Plauger urged the working group chairs to prioritize work with an emphasis on NB comments submitted in response to CD1, rather than new papers. Abrahams asked whether that applies to concepts, as well. Plauger responded that issues about concepts were raised by several NBs.

Discussion ensued.

1.7 Approval of the minutes of the previous meeting

Motion to approve the minutes (document PL22.16/09-0038 = WG21/N2848):

Mover: Hedquist
Seconder: Hinnant

Approved by unanimous consent.

1.8 Liaison reports

WG14 Liaison

Sutter asked whether WG14 is on track to issue a CD in 2010. Plauger replied that they are.

Stroustrup asked whether new incompatibilities with C++ will be introduced by this CD. Plauger reported that he knew of no new incompatibilities, and that he would continue to watch for any.

1.9 Editor's report and WP approval

The editor's report is document PL22.16/09-0106 = WG21/N2915

Motion to approve the latest Working Draft (document PL22.16/09-0104 = WG21/N2914):

Mover: Crowl
Seconder: Hinnant

Approved by unanimous consent.

1.10 New business requiring actions by the committee

Discussion of Concepts

Tasker introduced paper N2893, "The Long Pole Gets Longer", recalling that WG21's current schedule for completion of the C++0x standard was set at the Sofia Antipolis meeting in July 2008. Tasker argued that this schedule was adopted on the assumption that relatively complete implementations of most C++0x language features would be made available prior to Autumn 2010, when the committee had intended to issue a FDIS document. Further, Tasker claimed that this assumption has not borne out. Implementation work on concepts in particular has slowed down, possibly because of prevailing economic conditions. As well, ConceptGCC has frozen; it is not being maintained and has not been folded into the main GCC development line. For these reasons, Tasker stated his belief that concepts will not be ready for standardization before 2012.

Plauger explained that, if the committee chooses to advance a draft that does not include concepts, that decision will imply a great deal of work for the Project Editor.

Plauger suggested that the best thing to do, from a procedural stand point, is to produce a Type II Technical Report on concepts. The expectation is that this TR will one day become the standard. Plauger observed that Library TR1 was a "rip-roaring" success, and that the effect of TR1 was that, even as it was developed, it was being implemented. He felt that some work item was required to focus committee members' energies, and to preserve the work that has already been done on concepts, and he identified a Type II TR as "precisely the right vehicle for that."

Sutter pointed out that decoupling concepts from the C++ revision schedule and putting them into a TR is not cost-free, as the surgery just to take concepts out of the Working Draft could take at least a meeting. Sutter also noted that a NWI Proposal to work on a concepts TR may be premature if the committee is not within 12 months of issuing a registration draft. Sutter's concern is that an immediate NWI predisposes the committee to fixing the current concepts design, instead of reconsidering earlier design decisions.

Plauger agreed that removing concepts from the C++0x Working Draft is not cost-free. As well, he explained that, politically, it would be prudent to request a project right away, since that would ensure that there is no misconception about the committee's intention to continue work on concepts.

Glassborow warned that there are limits to the usefulness of Library TR1 as an example. Unlike any library, concepts is deep inside the compilation model of the language itself, so the TR is useless to users until vendors implement it. Glassborow fears that vendors won't implement a concepts TR until users demand it. "There is a chicken-and-egg problem." He advocated issuing a standard without concepts as soon as possible, and then issuing another revision five years later that includes concepts.

Stroustrup felt that, if concepts were removed from the Working Draft, then fundamental design points would inevitably be debated, and it will take five years, rather than one or two, to finish specifying concepts.

Abrahams explained that he has been assuming that the rest of the standard is ready enough that, if concepts are removed from the Working Draft, it will soon be ready for FCD ballot. On reflection, he realizes "I just don't know that." Also, he indicated that some of the ideas that have been proposed for redesigning concepts have not been implemented, and he believes that the committee won't be able to make progress until the proponents of alternative designs are willing to do proof-of-concept work.

Adamczyk voiced his support for the idea of concepts, but expressed concern that their implications are not yet fully understood. The cost is that compilation speed might increase noticeably because header files will double in size. Further, the committee cannot predict whether users will like the model. "There's a possibility of real harm to the language."

Stroustrup gave a presentation titled "Concept alternatives"

Concept alternatives: Slide One
Concepts is the future of C++.
- precise documentation
- better error messages
- overloading
Potential problems
- programmability
- complexity of formal specificationD
- compile time
- run time
- status quo
  - remaining work: details
  - risks: unacceptable programming model
  - complexity of description
  - schedule: no change
- fix and ship
  - remaining work: remove explicit concepts, add explicit refinement, add concept/type matching, handle concept map scope problems
  - risks: no implementation, complexity of description
  - schedule: no change or one meeting
- yank and ship
  - remaining work: yank (core and standard library)
  - risks: old template problems remain, disappointment in "progressive" community ("7 years work down the drain")
  - schedule: 5 years to concepts (complete redesign needed) or never

Stroustrup explained that "I think that 'do a TR in two or three years' is not a possibility, because we will have to rehash some of the discussions we've had."

Plauger agreed with Stroustrup's guess that five years' work is required for the completion of concepts.

Miller asked whether the "fix and ship" alternative that Stroustrup identifies in his slide will result in a good enough specification.

Stroustrup explained that "fix and ship" is an attempt to fix the user interface, but the specification is currently unnecessarily complex, and "fix and ship" will not remedy that. This is an attempt to separate the complexity into two parts; the complexity that users see, and the complexity that implementers see.

Gregor noted that, with "fix and ship," the committee will be making changes without the benefit of implementation experience.

Meredith suggested that Stroustrup's projections are optimisitic, because they address only core language work, and not changes to the library.

Spicer addressed the implementation issue by reporting that no feature, no matter how small, has been implemented without the result being some revision to its specification in the standard. He doesn't consider it realistic to put concepts into the language without an implementation to test the library.

Abrahams asked Stroustrup to explain how he assessed concepts for usability.

Stroustrup replied that his process is to write examples for common or typical cases, and to examine them and show them to students.

Discussion ensued.

Joly disagreed with statements that there is no implementation of concepts. There's an implementation that is a little bit outdated.

Stroustrup pointed to a serious problem in the insistence upon a complete implementation prior to standardization, arguing that many vendors won't implement a feature until it is standardized.

Tasker expressed the belief that implementation and design are not separate, and they should not be dissociated. Tasker also clarified that he did not say that standardization must follow the availability of a commercial implementation.

Stroustrup explained that he is happy to move forward with a partial implementation. However, he cautioned the committee against standardizing the limitations of an experimental implementation.

Dawes asserted that "in the open source world, you really do have to call some of the open source organizations as major implementors, and they do implement without a standard."

Addressing the fear that implementors wait for standardization before they begin work on a new language feature, Spicer pointed out that EDG has implemented many of the C++0x features already. Further, EDG implements most TRs.

Concept alternatives: Slide Two
- Duck typing
  - the key to the success of templates for GP (compared to OO with interfaces and more)
- Substitutability
  - Never call a function with a stronger pre-condition than is "guaranteed"
- "Accidental match" is a minor problem
  - not in the top 100 problems

- Concepts are implicit/auto
  - To make duck typing the rule
- Explicit refinement
  - To handle substitutibility problems
- General scoping of concept maps
  - To minimize "implementation leakage"
- Simple type/concept matching.

Crowl expressed a desire for a better understanding of the current state of the standard, of the proposed fixes, and of the impact of the proposed fixes. He doesn't believe that he has enough information to make a decision.

Meredith observed that the decision will have a big impact on how the Working Groups conduct their business at the present meeting.

Dawes stated that the committee needs to make a decision on this immediately based on the information that is available. "We've got a week of work that we've got to do on one path or on another path. We're going to have to make a decision on incomplete and inadequate data, and that's life."

Spicer drew a parallel between concepts and export, elaborating that both are intricate technical issues. And argued that the one risk that is unacceptable is putting something into the standard that might not work or that might be unusable. The likelihood of this is high when no implementation is available.

Wong asked Gregor whether he agrees that the magnitude of the problem is as large as has been suggested. Gregor answered that he agrees with the magnitude of the problem.

Wong asked Gregor whether he agrees with Stroustrup's list of options. Gregor answered that he thought that the committee needed to decide immediately whether concepts will be in C++0x. If the decision is made to remove concepts from the Working Draft, the committee can decide later how to continue work on them.

Stroustrup, responding to the form in which continued work on concepts might take, suggested that what's required is a small group with funding and time to work on the technical problems. "I do not think that this committee is the right forum for this work. If we yank, we have the problem of finding a group that can do the work."

Miller echoed Gregor's comment that the only decision we need to make this morning is whether to yank. "We can work this week if we at least decide that." Also, Miller reminded the committee that there has been concern that there has not been enough time for the application of concepts to the standard library.

Discussion ensued.

Glassborow predicted that the UK would vote No to an FCD that includes concepts, if it is issued within the next two years. "We are concerned that concepts is not baked out well enough. We do not think that we should be standardizing something that is not only not existing practice but is pure committee design."

Stroustrup further clarified the distinctions between the alternatives identified on his slide. explaining that the key difference between "yank and ship" and "fix and ship" is the complexity of description issue. "Fix and ship" is just fixing user interface issues, but not returning to first design principles. "Fix and ship" is an attempt to attain a "good enough" concepts. "Yank and ship" is an attempt to get ideal concepts.

Meredith suggested a first vote of "is status quo acceptable?"

Krügler suggested that the first and second options on Stroustrup's slide are not correctly stated. It's not clear that "status quo," for example excludes fixing the concept_map scope problems.

Boyouki stated that he considers concepts as a new mechanism for abstraction, and that the committee should consider what has been lost and what has been gained. He indicated that he doesn't care about 5% or 10% of compile time; he wants new mechanisms for abstraction. After Kernighan and Ritchie rewrote the Unix kernel in C, there was a 20% performance degradation, but the result was revolutionary anyway.

Spicer opined that the vote about the status quo being acceptable is problematic, because we're not sure what the status quo is.

Straw Poll: What is the support for removing concepts from the C++0x draft?

In favor28

Vote passes.

Sutter asked whether any national delegations present have concerns about this outcome.

Joly replied on behalf of France, explaining that this was a difficult decision, because it was phrased as a yes or no question.

Plauger explained that he heard strong sentiment that this was an important binary choice.

Sutter asked whether there are any nations represented in the room that would vote no to a standard that excludes concepts. Joly indicated that France may object.

Glassborow reported that BSI does not want concepts in C++0x, but will push very hard for concepts in the next revision.

Brown reported that he will push the US NB to reject a standard that does not include concepts.

Stroustrup expressed doubt that this vote reflects anything meaningful.

Miller agreed, on the grounds that no distinction was made between leaving concepts in but keeping the publication schedule as defined in Sofia Antipolis and leaving concepts in and delaying publication until they are done.

Lakos was also uncomfortable with the way the vote was stated.

Discussion ensued.

Straw Poll: continue this discussion after lunch?

In favor 20
Opposed 9

Stroustrup suggested that it was an error to go straight to a decision vote, since there are three distinct groups that need to vote:

Spicer indicated that the committee wanted to have a vote that gives clear direction on how to conduct the committee this week. That vote was taken. Stroustrup agreed, but "we skipped a step."

Lakos expressed a desire to know how much time each member thinks concepts will require for completion. Spicer replied that the time required to do what Stroustrup wants to do depends on how long it will take for an implementation to emerge.

Discussion ensued.

Plauger stated that we have had a half a century or more of software projects, and that we can look at certain statistics and get a rough idea of where we are in the process. Plauger argued that, given the growth in numbers of defects, and the nature of the decisions being debated, it is evident that the committee is still in the early stages of working on concepts.

Willcock asked, as a point of comparison, how long it will take the committee to finish a standard without concepts.

Plauger reviewed the current schedule, but voiced his personal opinion that this schedule is optimistic, and there is some possibility of a slip. However, this committee has traditionally been ambitious and things have worked out.

Joly observed that some C++0x features assume the existence of concepts (like range-based for loops), and it will take time to reconsider them.

Plauger noted that the new allocator proposal appears to be dependent on concepts.

Gregor reported that there are some issues that will have to be revisited. The iterator concepts are in flux.

Dawes explained that the number of outstanding issues will drop "fairly dramatically" if issues related to concepts can be ignored. Dawes guessed that about 30% of all remaining issues pertain to concepts. However, he felt that, in terms of the amount of work to be done, the number of man hours required will drop by 50% to 75%. Much of the work that remains to be done on the standard library relates to libraries that aren't conceptized.

Brown believed that the committee is underestimating the effort involved in stripping out concepts. Many issues were assumed to be fixed by the introduction of concepts. The committee will need to identify those issues and to be revisit them.

Becker reported that he can easily revert the WP to the state it was in before concepts were added. However, he will then need to reapply all changes that have been voted in since that time.

Stroustrup argued that, when assessing the cost of "yanking" concepts, the committee must consider the cost of the disappointment that will exist in the user community, and the cost of the perception that C++ is not improving.

Meredith noted that there is a cost as well in delaying the standard. This was expressed by users at the recent ACCU conference.

Miller summarized: the committee needs to balance the disappointment factor against the disappointment of delay. There is no no-cost option.

Stroustrup suggested a fourth straw poll: "how long do you think concepts will take?"

Plauger inquired as to whether any member objects to the informative votes that Stroustrup suggests.

Straw Poll: Anticipated Time To Concepts FCD?

0 years 0
1 year 0
2 years 9
3 years 13
4 years 14
5+ years 6

Straw Poll: Status quo (current content and schedule)?

Strongly Against 32
Weakly Against 10
Neutral 0
Weakly For 1
Strongly For 0

Straw Poll: "fix and ship" (i.e. fix until consensus and delay FCD until consensus is achieved on the fix?)

Strongly Against 19
Weakly Against 9
Neutral 2
Weakly For 6
Strongly For 8

Straw Poll: "decouple" (remove concepts from the C++0x standard, and decide later whether concepts will be the subject of a future TR, will first appear in a second revision of the standard, or will be published through some other vehicle.)

Strongly Against 2
Weakly Against 7
Neutral 2
Weakly For 7
Strongly For 24

Straw Poll: Should the committee require an implementation that can compile the standard library as a requisite condition for any future FCD that includes concepts?

Strongly Against 0
Weakly Against 1
Neutral 3
Weakly For 15
Strongly For 25

Discussion ensued.

2. Organize subgroups, establish working procedures.

We have two subgroups: Core and Library. Evolution and Concurrency will be reconstitued as necessary.

3. WG sessions (Core, Library, Performance, Evolution).

4. WG sessions continue.

5. WG sessions continue.

6. WG sessions continue.

7. General session.

7.1 WG status and progress reports.

Core Working Group

Adamczyk gave the following status report and reviewed the CWG formal motions (see 7.2, below):

We classified about 100 new issues, reviewed proposed wording on about 70, and moved around 70 issues to "Ready" status for next time. We're still falling behind, and in particular we haven't looked at a lot of the NB issues that require some discussion.

We discussed a number of issues related to rvalue references, defaulted and deleted functions, and inline namespaces, and in almost all cases decided on a solution and assigned someone to work on wording.

We reviewed the paper updating the lambda wording and approved it with very minor changes.

We reviewed a new draft of the Unified Function Syntax proposal. We asked the author for a number of wording changes/additions and some minor functionality changes, and have received an updated paper. There was some feeling that we wanted a way to use the trailing return type in any function type, and that we wanted to be able to write any type as a return type. This has been delegated to a subgroup and EWG, who are investigating. As indicated at the last meeting, CWG will produce the best possible proposal and bring it to the full committee for a vote; the issue won't be decided in the CWG.

We discussed the override/hiding attributes proposal and resolved the extant naming issues.

Plauger asked about the likelihood that the CWG will address all of the NB comments by the end of the next meeting. Adamczyk answered that "the odds are zero", since the process requires that issues sit in Ready state between meetings. The probability is a bit higher if the process is changed.

Library Working Group

Hinnant reviewed the LWG formal motions (see 7.2, below).

Plauger asked Hinnant whether LWG will address all of the Library-related NB comments before the end of the next meeting. Hinnant replied that it would not, unless there is another ad hoc meeting or the process is changed so that issues are not required to sit in Ready state between meetings. Plauger then asked about the likelihood of completion if that requirement were removed. Hinnant responded "I raise the odds to 40%."

Discussion ensued.

Evolution Working Group

Stroustrup reviewed EWG progress for the week. EWG will be making no formal motions.

The proposal to deprecate trigraphs was discussed. Vandevoorde and Wong will work together to explore an alternative to trigraphs that uses raw string literals. The EWG will not deprecate trigraphs unless an acceptable alternative is found.

Document N2843, "Pack Expansion and Attributes" was reviewed by EWG and has been moved to Core.

Proposals for an async() function, and issues relating to thread_local static functions and safe termination of detached threads were discussed. See:

Crowl and Sutter will continue to work together on these issues.

N2852, "Explicit Virtual Overrides" was discussed and has been moved to Core. Alternative names for the [[check_names]] attribute that have been considered include [[strict_names]] and [[base_check]].

N2819, "N2819 Ref-Qualifiers for assignment operators of the Standard Library" was initially considered by the LWG. This proposal sought to change 350 copy-assignment operators in the C++ standard library to prevent assignment operations in which the left operand is an rvalue. Due to the large number of changes required, the proposal was sent to EWG, with the request that the default behavior for implicit copy-assignment operators be reconsidered, so that assignment to an rvalue is not permitted. The EWG resolved to maintain the status quo, because of concerns about backwards compatibility.

N2890, "Unified Function Syntax" was discussed, and was moved to Core. Voting on this paper will wait until N2927 "New wording for C++0x Lambdas (rev. 2)" has been applied to the Working Draft.

Crowl, Stroustrup, and Vandevoorde will work on a Linear Declaration Syntax that is an alternative to and generalization of Unified Function Syntax. Some examples:

[] p1: *const int; // Pointer to const int
[] p2: *intconst; // Error
[] p3: (char)->*int; // Function talking a char returning pointer to int
[] p4: *()->int; // Pointer to function returning an int
[] p5: ()->*()->int; // Function that might return p4
[] p6: [2][3] * [4] int;// Array of 2 arrays of 3 pointers to arrays of 4 ints

N2904, "Defining default copy and move" and N2855, "Rvalue References and Exception Safety" were discussed.

7.2 Presentation and discussion of DRs ready to be voted on. Straw votes taken.


Move we empower the Project Editor to remove concepts from the Working Draft.

No objections.

Decimal Technical Report

Move we submit the Decimal Technical Report to ISO for TR Ballot.

Friendly amendment by Maurer to add the document number (N2849) to the motion.

Three objections.

CWG Motions

Motion 1 Move we apply the resolutions of all issues marked "ready" from N2877 to the C++0X Working Paper, i.e. issues numbered 495 , 599 , 653 , 685 , 702 , 707 , 711 , 714 , 716 , 746 , 749 , 757 , 816 .

Adamczyk noted that 816 requires a diagnostic on [[final]], i.e., you can't ignore attributes.

No objections.

. Motion 2 Move we apply N2927 "New wording for C++0x Lambdas (rev. 2)" to the C++0X Working Paper.

Crowl had earlier expressed concern about limitations on the scoping of nested lambdas, but felt that this issue could be resolved separately later. The issue is this: a lambda that is nested inside another lambda cannot capture the members of the containing scope.

Vandevoorde explained that you cannot put a lambda into a sizeof or decltype expression.

Adamczyk reported that unnamed parameters are permitted under this proposal.

No objections.

Motion 3 Move we apply N2924 "Implicitly-Deleted Special Member Functions" to the C++0X Working Paper.

Adamczyk noted that an inaccessible function in a base class results in a deleted function in the derived class, as in the current/old working draft and the concepts wording, but contrary to the change requested by a U.S. NB comment (US 50).

No objections.

Motion 4 Move we apply N2930 "Range-Based For Loop Wording (Without Concepts)" to the C++0X Working Paper.

Adamczyk explained that this paper includes changes approved by LWG. <initializer_list> is not preincluded in every compilation (no change from current/old working draft).

Meredith reported that BSI supports the proposal but would raise the issue of automatic preinclusion of <initializer_list>.

Plauger asked whether there was any other place in the language where the compiler is required to preinclude a header. Adamczyk replied that there is not.

No objections.

Motion 5 Move we apply N2933 "Pack expansion and attributes (rev. 2)" to the C++0X Working Paper.

Nelson asked whether this proposal has been implemented. It has not.

One opposed. No other objections.

Motion 6 Move we apply N2928 "Explicit Virtual Overrides" to the C++0X Working Paper.

No objections.

LWG Motions

Motion 1 Move we apply the resolutions to the following issues from N2894 to the C++0X Working Paper:

688 , 765 , 810 , 814 , 853 , 869 , 878 , 888 , 890 , 898 , 899 , 904 , 907 , 909 , 922 , 925 , 931 , 938 , 943 , 948 , 949 , 965 , 970 , 975 , 981 , 982 , 984 , 986 , 990 , 991 , 993 , 994 , 997 , 998 , 1006 , 1014 , 1021 , 1037 , 1038 , 1039 , 1040 , 1044 , 1045 , 1065 , 1066 , 1070 , 1073 , 1103 .

No objections.

Brown commended the extraordinary efforts of those who participated in the Batavia ad hoc session. Applause.

Motion 2 Move we apply N2926 "C++0x Stream Positioning - Revision 1" to the C++0X working paper.

No objections.

Motion 3 Move we apply N2923 "Specifying the complexity of size() (Revision 1)" to the C++0X working paper.

Crowl asked whether this an ABI-breaking change. Hinnant replied that it depends on the implementation. Some implementations will change.

Brown expressed a concern that this affects Random Numbers Library. Talbot confirmed that it does.

Vandevoorde asked whether C++0x breaks the ABI in any other way? Hinnant answered that it is, because ref-counting of strings is no longer permitted.

Talbot reported that the only known implementation that will be broken by N2923 is GCC's.

Stroustrup asked whether this increases the size of the empty list by one word. Plauger confirmed that it does, but that was considered acceptable because programmers that are sensitive to the size of an empty list can now use forward_list.

Discussion ensued.

Straw poll:

For 31
Against 5
Abstain 6

Motion 4 Move we apply N2864 "Thread Unsafe Standard Functions" to the C++0X working paper.

Plauger reported that "this is exactly congruent to what C is doing."

No objections.

Motion 5 Move we apply N2932 "Fixing freestanding: iteration 2.2" to the C++0X working paper.

Dawes reported that this paper directly clearly one NB comment and helps with "a couple of other" NB issues.

There was some dispute that this paper should be accepted at this meeting, rather than the next one, since it was revised late in the week.

One objection.

Discussion of potential schedules:

Plauger recounted that working group chairs have reported little likelihood of completing a Disposition of Comments document by the end of the next meeting. The committee's goal has been to issue an FCD at the end of the Santa Cruz meeting, but that goal does not seem to be within reach. A possible fallback course of action is to issue a CD instead of an FCD. The next alternative to consider is slipping the schedule by one or more meetings. The logistical risk associated with slipping the publication schedule is that it could affect the meeting schedule.

Meredith averred that a CD is feasible, if it only addresses NB comments and we let Ready comments go directly into WP.

Plauger explained that there is no guaranteed one-year delay between documents, so issuing a CD does not imply a one year delay.

Hedquist noted that it depends on the number and degree of NB comments.

Dawes suggested that the committee needs to consider slipping two meetings and then issuing an FCD.

Witt doubted that the committee can realistically issue any ballot document by next meeting, as there is too much uncertainty due to the removal of concepts.

Crowl asked about the value to the NBs and the public of any CD that we might issue at the next meeting. He anticipated that the value to both groups will be low.

Plauger explained that, if the committee issues an FCD and it fails, the SC22 secretariat will almost certainly require that a CD be issued next. A second consecutive FCD is not not likely to be permitted. This implies at least a two-year delay.

Stroustrup announced that removal of concepts from the Working Draft will be a major setback, possibly the biggest one in C++ history. In his opinion, concepts could have been simplified enough to be retained, but he believes that if concepts are removed, it will be about five years before the committee will be able to standardize them.

Plauger reported that he hasn't heard sentiment that the committee needs to register a concepts TR right away. There is no danger that momentum on concepts will dissipate.

Tana Plauger asked Becker when he thinks the reverted draft will be ready. Becker replied that N2723 is in the pre-San Francisco mailing. It is the most recent draft without concepts. He further explained that all of the source of the Working Draft is under version control, so he can easily revert the WD to the state it was in prior to the formal adoption of concepts. The sections of the Draft that are going to be changed are pretty obvious. They include the library clauses that were conceptized, and the text that was added to the core language clauses to support concepts. Becker suggested that, to see what the next WD will look like, one can consult N2723 for areas that were heavily modified due to concepts, and read N2914 for all other areas.

Crowl suggested that it will be extremely helpful if a draft could be available for the mid-term mailing so that normative text is available to those who intend to submit papers for the pre-meeting mailing.

Becker replied that many sections of the Working Draft will not be affected by this rollback.

Adamcyzk recalled that there is a group that routinely reviews new Working Drafts, and he assumes that these individuals will make themselves available to review Becker's work.

Glassborow noted that the removal of concepts is a dramatic change. This argues in favor of a CD, rather than an FCD.

8. WG sessions continue

9. WG sessions continue

10. Review of the meeting

39 members were present.

Glassborow announced that he will be retiring as a continuing participant in WG21. Applause and standing ovation in recognition of Glassborow's contribution to the committee over the years.

Nelson moved to thank the host. Applause.

10.1 Formal motions, including DRs to be resolved.


Move we empower the Project Editor to remove concepts from the Working Draft.

Mover: Hedquist
Seconder: Vandevoorde

Approved by unanimous consent.

Decimal Technical Report

Move we submit N2849 , the Decimal Technical Report to ISO for TR Ballot.

Mover: Plauger
Seconder: Wong

Vandevoorde expressed opposition with the TR because he felt that it encourages binary incompatibility with C.

In favor26

Motion carries.

CWG Motions

Motion 1

Move we apply the resolutions of all issues marked "ready" from N2877 to the C++0X Working Paper, i.e. issues numbered 495 , 599 , 653 , 685 , 702 , 707 , 711 , 714 , 716 , 746 , 749 , 757 , 816 .

Approved by unanimous consent.

Motion 2

Move we apply N2927 "New wording for C++0x Lambdas (rev. 2)" to the C++0X Working Paper.

Approved by unanimous consent.

Motion 3

Move we apply N2924 "Implicitly-Deleted Special Member Functions" to the C++0X Working Paper.

Approved by unanimous consent.

Motion 4

Move we apply N2930 "Range-Based For Loop Wording (Without Concepts)" to the C++0X Working Paper.

Adamczyk noted that this paper has changed since yesterday. There were some minor changes in the sections of the paper that apply to the library.

Approved by unanimous consent.

Motion 5

Move we apply N2933 "Pack expansion and attributes (rev. 2)" to the C++0X Working Paper.

In favor34

Motion 6

Move we apply N2928 "Explicit Virtual Overrides" to the C++0X Working Paper.

Approved by unanimous consent.

LWG Motions

Motion 1

Move we apply the resolutions to the following issues from N2894 to the C++0X Working Paper:

688 , 765 , 810 , 814 , 853 , 869 , 878 , 888 , 890 , 898 , 899 , 904 , 907 , 909 , 922 , 925 , 931 , 938 , 943 , 948 , 949 , 965 , 970 , 975 , 981 , 982 , 984 , 986 , 990 , 991 , 993 , 994 , 997 , 998 , 1006 , 1014 , 1021 , 1037 , 1038 , 1039 , 1040 , 1044 , 1045 , 1065 , 1066 , 1070 , 1073 , 1103 .

Approved by unanimous consent.

Motion 2

Move we apply N2926 "C++0x Stream Positioning - Revision 1" to the C++0X working paper.

Approved by unanimous consent.

Motion 3

Move we apply N2923 "Specifying the complexity of size() (Revision 1)" to the C++0X working paper.

Vandevoorde expressed his opposition to this proposal because it forces implementors to break binary compatibility.

In favor29

Motion carries.

Motion 4

Move we apply N2864 "Thread Unsafe Standard Functions" to the C++0X working paper.

Approved by unanimous consent.

Motion 5

Move we apply N2932 "Fixing freestanding: iteration 2.2" to the C++0X working paper.

Approved by unanimous consent.

10.2 Future meetings:

See 11.1, below.

10.3 Issues delayed until Saturday


11. Plans for the future

Plauger asserted the need for the committee to decide whether the document it is preparing is a CD or an FCD.

Reasons for CD over FCD:

  1. more politic
  2. gives committee more flexibilty in terms of resolution of comments
  3. less risk, since failure of FCD ballot could lead to a two-year delay
  4. ballot period might be shorter

Dawes noted that a danger in issuing a CD prematurely is that committee will get very large number of comments, and the disposition of those comments will take a long time.

Maurer suggested that the committee should issue some document as soon as possible so as to solicit input on the removal of concepts.

Straw Poll: Should the next document be a CD or an FCD?

CD 31
Abstain 4

Straw Poll: When should we issue the CD?

October 2009 0
March 2010 23
July 2010 9
November 2010 0

The committee's aim is to issue a CD at the end of the March 2010 meeting.

11.1 Next meeting

The next meeting will be held Oct 19-24, 2009 in Santa Cruz CA. The meeting host is Dinkumware, Ltd.

11.2 Mailings

Nelson reported the following mailing deadlines:

post-meeting mailing July 31, 2009
pre-Santa Cruz mailing September 25, 2009

There will be no mid-term mailing.

11.3 Following meetings

The following meetings are as follows:

  1. Mar 8-13, 2010 Pittsburgh, PA, USA: CERT
  2. Jul 12-17, 2010 Rapperswil, Switzerland: HSR Hochschule für Technik
  3. Nov 8-13, 2010 Batavia, IL, USA: Fermilab

Motion to adjourn

Mover: Hinnant
Seconder: Dawes

Unanimous consent.


Company/Organization Representative Mon Tue Wed Thu Fri Sat
Apple Computer Howard E. Hinnant V V V V V V
Apple Computer Doug Gregor A A A A A A
Bloomberg John Lakos V V V V V V
BoostPro Computing David Abrahams V V V V
Dawes Beman G. Dawes A A A A A A
Dinkumware P. J. Plauger V V V V V V
Dinkumware Tana Plauger A A A A A A
Dinkumware Christopher Walker A A A A A
Edison Design Group J. Stephen Adamczyk V V V V V V
Edison Design Group Mike Herrick A A A A A A
Edison Design Group Jens Maurer A A A A A A
Edison Design Group William M. Miller A A A A A A
Edison Design Group John H. Spicer A A A A A A
Edison Design Group Daveed Vandevoorde A A A A A A
Embarcardo Alisdair Meredith V V V V V V
Fermi Nat. Accelerator Lab Walter E. Brown V V V V V V
Gimpel Software James Widman A A A A A A
Gimpel Software James Gimpel V V V V V
Google Lawrence Crowl V V V V V V
IBM Robert Klarer V V V V V V
IBM Michael Wong A A A A A A
Indiana University Andrew Lumsdaine V V
Indiana University Jeremiah Willcock A A V V V
Intel Clark Nelson V V V V V V
Microsoft Jonathan Caves V V V V V V
Microsoft Herb Sutter A A
Oracle Paolo Carlini V V V V V V
Perennial Barry Hedquist V V V V V V
Plum Hall Francis W. Glassborow V V V V V V
Red Hat Jason Merrill V V V V V V
Roundhouse Consulting Pete Becker V V V V V V
Seymour Bill Seymour V V V V V
Sun Microsystems Stephen D. Clamage V V V V V V
Texas A&M Bjarne Stroustrup V V V V V
Zephyr Associates Thomas Witt V V V V V V
Bruker Daltonics Daniel Krügler N N N N N N
INRIA Sylvain Pion N N N N N N
Niels Dekker LKEB, Leiden University Medical Center N N N N N N
Nokia Martin Tasker N
RapidMind Stefanus Du Toit N N N N N N
TU Darmstadt Felix Kerger N
TU Dresden Peter Gottschling N N N
University Carlos III J. Daniel Garcia N N N N N N
University of Nice Jean-Paul Rigault N N N N N N
Vollmann Engineering Detlef Vollmann N N N N N N
Saeed Amrollahi Boyouki N N N N N N
Loïc Joly N N N N N N
Sascha Neupert N
Kevin Sopp N N N N N N
Alan Talbot N N N N N N
Ville Voutilainen N N N N N N