Document Number:

WG21/N1107

 

X3J16/97-0069

Date:

20 July 1997

Project:

Programming Language C++

Reply-To:

Sean A. Corfield

 

sean@ocsltd.com

J16 Meeting No. 24
WG21 Meeting No. 19
14-18 July 1997
Informal Record of Committee Discussions
Including US TAG Minutes (Appendix B)

BSI
389 Chiswick High Rd
London, UK

1. Opening activities

Clamage convened the meeting as chair at 9:05 GMT on Monday, 14 July 1997. Miller was vice-chair, and Corfield was the secretary.

BSI hosted the meeting.

1.1 Opening comments

Clamage noted that whereas the Nashua meeting was devoted to J16 resolution of US ballot comments, the London meeting would be devoted to WG21 resolution of all the NB ballot comments.

1.2 Introductions

Corfield circulated an attendance list each day, which is attached as Appendix A of these minutes. Miller circulated a copy of the membership list (SD-2 = 97-0001R3) for members to make corrections.

1.3 Membership, voting rights, and procedures for the meeting

Clamage reminded the attendees that this is a co-located meeting of WG21 and J16. (The joint membership is denoted WG21+J16 in these minutes.)

Clamage explained the voting rules:

Jean Stride, BSI, explained the facilities provided by the BSI.

Corfield explained the computing facilities provided by Object Consultancy Services Ltd and the Internet facilities provided by Demon Internet Services Ltd.

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

Deferred to 1.7.

1.5 Approval of the minutes of the previous meeting

Corfield said that he had not received any corrections for the minutes.

Motion by Dawes/Lajoie:

Move we approve N1059 = 97-0021 as the minutes of the previous meeting.

Motion passed J16: lots yes, 0 no, 0 abstain.

1.6 Agenda review and approval

Deferred to 1.7.

1.7 Report on the WG21 Sunday meeting

Plum summarized the WG21 meeting discussions. [Note: see N1106 = 97-0068 for details.]

Plum said the usual Working Group organization would be in place and that the locale/iostreams subgroup had the biggest number of issues and would start straight away. Plum said that each subgroup would work directly to produce troff source changes to speed up the process of incorporating changes into the WP. He asked that a troff comment identifying which NB comment the change addresses and what the change does accompany each edit. About half the delegates had downloaded the comments from the web site. There was a diskette available with this document on it and there was also an annotated paper copy provided by Josuttis of the German delegation.

Plauger asked for the ISO ballot vote to be noted in the minutes:

11 yes without comments

6 yes with comments

5 no with comments

1 abstain

1 not voting

Plum said subgroups would work from early Monday through to Wednesday 16:00 at which point, each subgroup report should be printed and copied for everyone. The full committee will reconvene on Thursday to review the recommendations of the subgroups.

Unruh and Rumsby had volunteered for the drafting committee. Saks said he would be available to help during the day. Plum asked for further volunteers. Lajoie said that each subgroup would provide at least one drafting representative. The drafting committee's responsibility will be to review the "context diffs" produced by each subgroup. Dawes and Schwarz expressed concern about editing troff source code during the meeting. Lajoie said that the editors should have the chance to review their changes prior to wide distribution of the PostScript. Koenig explained that since the bulk of our work between meetings would be reviewing and correcting the changes made at this meeting, there would be ample opportunity to ensure the changes we make are correctly integrated into the WP.

Plum reviewed who would be working in each subgroup and how many people were familiar with editing procedures. Each group seemed to have at least two members familiar with the process. Plum then asked for a nominated scribe for each subgroup:

Core 1

Lajoie

Core 2

Adamczyk

Core 3

Gibbons

Library 1

Dawes

Library 2 (locale and iostream)

Schwarz

Dawes noted that some of the resolutions to library issues involve papers that we cannot integrate into the troff easily at this meeting.

Lajoie said that each subgroup would produce a paper and allow time for everyone to read it. Only items that people have questions about will be presented to full committee. Stroustrup said that each subgroup should bundle as many issues as possible into single motions.

Plum reiterated our goal of closing every issue at this meeting.

Dawes said that LWG would discuss:

Clamage said that any contentious issues must be resolved prior to the next meeting.

Glassborow asked whether we knew of any issues that might change an existing yes vote to a no. Clamage said we have not done that analysis yet. Glassborow said National Body representatives need to check that resolutions of major issues do not run counter to their country's positions.

Plum said that he was negotiating to provide an evening room at the Vanderbilt Hotel.

1.8 Liaison reports

Benito gave the WG14 (C language) liaison report. ISO C is currently in the registration ballot. The ISO C committee have added inline, declarations in for loops and extended identifiers, all in a manner compatible with C++. He said they have also, in principle, added a bool type either compatible with C++ or as a macro.

1.9 New business requiring actions by the committee

Colvin introduced a revision of the paper from Abrahams on exception safety in the library.

Plum said that a small group would meet on Monday night to discuss a language-based solution to the template member function default arguments problem.

Lajoie asked what would happen to issues discovered between meetings. Koenig said we have agreed that only extremely trivial issues could be corrected - issues that could not possibly be objected to by any NB. Brück asked whether we could leave small editorial issues for post meeting work? Stroustrup suggested that if a subgroup has finished work, volunteers could move to assist other groups.

2. Working Paper for Draft Proposed Standard

2.1 Review of changes in the Working Paper (Committee Draft)

Koenig said a few bugs have been fixed and editors at this meeting should get a baseline copy directly from him for editing.

3. Organize subgroups, establish working procedures.

There were three Core Language Working Groups chaired by Lajoie, Adamczyk and Gibbons, and two Library Working Groups chaired by Dawes and Schwarz.

The committees recessed at 10:25am.

4. WG sessions (Monday, Tuesday, Wednesday)

The committees reconvened at 16:00 on Wednesday afternoon.

5. General session I

The WG chairs summarised their progress.

6. General session II

Clamage said that WGs would present only controversial issues today. Minor issues will be accepted by acclamation during Friday's sessions. Plauger asked for clarification that we would get a chance to see written papers that explain all the changes we are making. Stroustrup noted that if anyone thinks a minor issue is not minor, they can ask for a separate vote. Plum said there will probably be about 100 pages of material to read prior to voting. Accordingly we will only get about 30 copies of each paper instead of 60.

6.1 Core II Language WG

Adamczyk presented the "major" issues from his group detailed in N1091 = 97-0053. He noted there would be a revision of this paper produced at the meeting that had the following change in section 4.2: "an lvalue" will be replaced by "an lvalue or rvalue".

Adamczyk explained the proposed clarification of the throw() exception specification on operator new(). If the empty exception specification is present, the compiler will be allowed to assume that new can return zero for failure and generate code to test accordingly. If no exception specification is present or a non-empty specification is present, the compiler can assume that new will indicate failure by throwing an exception and can therefore elide the test for a null pointer return. This was non-controversial.

Adamczyk explained the resolution of Canada comment 10, as described in N1084 = 97-0046 and noted that this passed with large majority in the combined Core WG. The proposal is to remove resolution of overloading based on lvalue/rvalue. This level of granularity was added a few meetings ago and Adamczyk said no compiler vendors have implemented it. Gibbons said that he knew a few vendors who had implemented it and had changed their library to match. Adamczyk said that the change was more in keeping the ARM rule about overloading on value and reference types. Gibbons feels that this change is driven by partial ordering problems and that a similar problem exists with cv-qualification. Spicer said that it was the change in overload resolution that broke partial ordering and we were just trying to fix it. Gibbons feels there are several "surprises" in overload resolution and that this selection rule was simply one such "surprise". Adamczyk disagreed saying this problem was more surprising and returning to the old rule is better. Brück asked which NB issue it fixed. Adamczyk clarified that Canada identified a discrepancy that needed fixing but had not provided a resolution.

Straw vote passed J16: 19 yes, 3 no, a few abstain.

Straw vote passed WG21: 3 yes, 1 no, 2 abstain. A count of W21 representatives showed Germany, Netherlands, France, Sweden, Canada, USA and UK were present. Japan was temporarily absent.

Adamczyk explained the proposed clarification of the conversion to a common type in a ?: expression. The proposed resolution adds the option to convert to a common builtin type after trying to convert each type to the other. This was not controversial.

6.2 Core III Language WG

Stroustrup presented his proposal, N1043 = 97-0005, to change the handling of default arguments so that they are checked at instantiation instead of declaration. Dawes said that the overwhelming majority of the library WG were in favor of a Core language change. Unruh objected to the lack of a library proposal for change. Clamage said he had agreed to produce such a proposal but had been dissuaded from doing so because some wording to support his change was not actually in the WP. Gibbons didn't think such a proposal (to add the wording) would involve much work. Austern said the LWG had not discussed the issue. Dawes said there are three possibilities: Stroustrup's core change, Clamage's combined core & library change and a possible library only change which Dawes feels need further work. Plauger expressed concern that we were discussing a change that seemed to undo a previous language change. Stroustrup said it wasn't a prior change, merely a clarification that default arguments worked in a particular way.

Plum asked that we go over the technical issues involved in both possible solutions before we take a vote. Gibbons said that the core/library combined proposal mentioned by Clamage involved only a core clarification, not a change. Myers asked for clarification of what the draft currently says. Plum wanted to move on because discussing the wording in the draft is likely to generate a lot of discussion.

Dawes said there would be three presentations: Stroustrup (core), Clamage (library 1), Dawes (library 2).

Clamage explained the background to the proposals.

template< class T > void foo( const T& = T() );
struct C { C(int); };
C c;
foo( c );	// fails on T()

Part of the (first) library proposal is to introduce:

template< class U > U default_value()
	{ return U(); }
template< class T > void foo( const T& = default_value<T>() );

Gibbons said that Core III felt the language did not need to change to support this usage - it was an editorial issue over when an expression is "used". Stroustrup said that the WP does not state how this example should behave and that Core III is proposing the minimal change to clarify this. He feels the clarification is better than the status quo but does not solve the general problem.

Plum established that no one actually objected to this clarification. He wanted everyone to be clear that this clarification will be adopted anyway so that we can now consider other aspects of the proposals. Spicer said this clarification must be made anyway regardless of what else we do since it covers more than just template member default arguments.

Myers noted that the proposal requires that default_value<U>() implies that U has a copy constructor. Clamage said the library already requires this. Gibbons and Koenig noted that use in a default argument already requires a copy constructor. Brück argued against the proposal on the grounds that this is a "hack" rather than a generic solution for all libraries or uses. He is concerned about the proliferation of such template functions when the default arguments are non-empty. Furthermore, from a teaching point of view, he feels it is hard to justify why T() is not sufficient. Austern asked for clarification that this was a proposal to add default_value<>() to clause 20 for use by everyone and therefore we need to ask the usual questions about interface and specification. Plum acknowledged this and asked that we defer such discussion until after, or whether, the proposal is accepted. Plauger and Austern then said it is tedious but not difficult to introduce the extra signatures (which will be Dawes' proposal).

Dawes presented the other library proposal, or at least the mechanics of it since the LWG had not had time to analyze the problem. He said that the "Plum patch" called for a blind replication of the signatures which was not acceptable so the LWG would need to check each signature and recommend appropriate changes. Such an explosion of signatures is not viewed favorably by the LWG so any future proposal along these lines would probably involve removing some signatures and changing others as well as the basic duplication of many of the signatures.

There was extensive discussion about the political aspects of making such interface changes.

Koenig explained the status quo of the intent of the "Plum patch". He believed it to be an entirely mechanical translation of text in the working paper. He spoke against the default_value<>() solution on the grounds of teachability. Josuttis agreed that the teachability issue is very important.

Spicer asked that we move along by only answering questions about people's understanding of each proposal. Austern asked Stroustrup if his proposal had changed in any way since it was presented earlier in the week. He said no. Plauger asked Spicer how he felt about implementing Stroustrup's proposal. Spicer was concerned about discovering problems after we vote it in because it changes language semantics.

There was extensive discussion about how to characterize the proposal for a vote. Plauger said that Stroustrup's proposal needs a vote in its own right.

Straw vote on Stroustrup's proposal passed J16: 27 yes, 8 no.

Straw vote on Stroustrup's proposal passed WG21: 5 yes, 0 no, 2 abstain.

Straw vote on adding default_value<T>() to the library failed: 0 yes, lots no.

Straw vote on adding an unknown number of extra signatures to the library failed: 1 yes, lots no.

6.3 Library WG

Dawes presented the LWG resolutions. He said that the WG did not review the "editorial" public comments one by one as a group but that individual members of the LWG were looking at them.

Dawes explained the proposed resolution to the problem of ambiguities between container member functions taking iterator ranges as parameters (and 'size_t, T' signatures). The proposed resolution is to add wording that the library should "do the right thing": if the member template is invoked for integral arguments, it behaves as if the 'size_t, T' variant had been called. This can be achieved by various methods including simply adding extra overloads. There were no questions about this issue.

Dawes then discussed the proposal for introducing an exception safety policy to the library. Koenig asked about locale/iostream because he recalled Schwarz saying iostream is already exception safe. Austern confirmed that the only change was to state explicitly that traits do not throw exceptions. Austern said that valarray's contained type must not throw exceptions, which makes valarray exception safe, and locale was already exception safe. Plum noted that the locale callback functions must not throw any exceptions. Myers said they intended to add that wording.

Dawes then discussed the problem that pointers to C library functions had non-portable linkage. Plum asked for clarification. Dawes explained what the LWG decided:

Unruh asked how clear the difference between "should" and "shall" would be in the WP on this issue. Koenig said ISO Drafting Directives are clear on the usage but Dawes said that the WP would be clear by way of a footnote or similar explanatory note. Someone asked whether the wording would allow C library functions to have extern "FORTRAN" linkage or something similar? Laughter. It seemed that the WP would be quite clear about what was allowed.

Dawes then explained the proposed restrictions on what signal handler functions could do (in answer to a German ballot comment). There were no questions.

Plum presented some work on whether C library routines should be in global namespace or in std namespace.

There was quite a bit of discussion about why C library names were put into std in the first place.

Some people seemed to think that the WP already reserves C library names in all namespace scopes. Myers felt it would be clearer to use ::std in this context because it was talking about global names. Stump asked whether anyone thought the second point was important. Unruh gave a specific example of where name mangling caused problems if these types were not treated identically in both std and global namespaces. Unruh wanted to reserve all C names in both global and std namespace even when the headers are not included. This was well-supported by the committee. Glassborow expressed concerned about the large number of name stems C reserves. Plum feels this is not a problem. Stroustrup said as long as you stay out of the global namespace, you will not clash with the C library.

Straw vote in favor of adding both clarifications passed: 22 yes, 1 no, 11 abstain.

Plum volunteered to write this up as a formal proposal.

6.4 Core I WG

Lajoie presented N1094 = 97-0056 which proposes that operator new() and operator delete() can be declared static or inline. Lajoie noted that we cannot allow Koenig lookup to be used directly because it applies to argument types and not for the class type associated with the use. Miller noted that Koenig lookup can't be used for placement delete either because it is called implicitly. Someone pointed out that the proposal should read "declared static in namespace scope". Lajoie noted that at the bottom of page 4, the sentence containing "array of class arguments" should be "array thereof". Schwarz asked whether the proposal affected the technique of calling the allocation function inside the constructor and Stroustrup said no because there are already special cases there. Unruh did not feel this actually resolved the Ireland comment, because the WP says global operator new() is implicitly declared with external linkage which would cause an error if you additionally declare it static. Lajoie noted that one member of Core I strongly felt we should leave the language alone.

Straw vote passed J16: 14 yes, 4 no, 16 abstain. Straw vote passed WG21: 3 yes, 0 no, 4 abstain.

Glassborow suggested that we defer a decision until we have Ireland's feedback on the proposal. Unruh agreed, saying we need to know whether the proposal actually satisfies the National Body. Plum suggested we provisionally approve the change and he will consult with the NB as convener. Brück asked for confirmation that there is no formal procedure for obtaining feedback from NBs on changes we make. Plum said that the only route is through the ballot mechanism. Adamczyk voiced concern that the proposal goes beyond what Ireland actually asked for. Lajoie explained that since inline is extern by default, it would clash with the library version so static is also needed, except that static is deprecated at file scope so declarations in namespaces are necessary. Plum asked for a volunteer to liaise with Ireland's technical experts about the issue. Miller volunteered.

Lajoie explained the proposed clarification of when copies of objects can be elided, noting this answered an Australian comment. She said the WP is too broad and allows copies to be elided when they can still be used (she produced example where part of the copied object is aliased and subsequently used). Lajoie said that the Core WG felt both explicit and volatile have undesirable semantic associations so would not be suitable to tag copy constructors that should not be elided. Then the WG removed the WP text that allowed the optimization to attempt to replace it with better wording.

Lajoie said the two cases they wanted to explicitly allow are:

  1. elision of copy of temporary values,
  2. elision of copy of return value.

Lajoie said the options are:

Koenig said he was certain this addresses the Australian comment. Stroustrup raised the issue of calling an inline function and passing by value - this is a useful optimization that the change would outlaw. He was concerned that we should attempt to formulate an appropriate rule for this. Koenig spoke about a couple of other optimizations that he felt were important but he had been unable to formulate rules to cover them. Glassborow echoed Stroustrup's concerns about the impact on forwarding functions. He also noted that the as-if rule would continue to allow optimization of copy constructors for objects with trivial constructors and destructors. Unruh spoke in favor of the proposal because neither the status quo (allowing unsafe optimizations) nor disallowing optimizations would be acceptable. He felt that we need to do more work to establish the safety of other optimizations.

Preference straw vote:

Straw vote on no change: 4 yes.

Straw vote on removing 12.8p15 (remove optimizations): 0 yes.

Straw vote on accepting the proposal and pursuing further changes: 20 yes.

Straw vote on accepting the proposal and not pursuing further changes: 5 yes.

Lajoie said Core would conduct further work to look at other optimizations.

6.5 Core III Language WG (continued)

Gibbons said most of his group's issues were small and obscure. Gibbons said two ballot comments were not addressed including what to do about template template arguments and an obscure naming issue. He then moved on to the controversial issues.

Gibbons explained the proposal to remove template template arguments. The background is that having discovered some problems, the Core III WG investigated the issue and then became concerned that there were more problems lurking. The WG then agreed that it would be appropriate to remove the language feature altogether. Spicer clarified that he did not want the feature taken out because of any objection to implementing it, he wanted it taken out because it was poorly specified.

Corfield said his recollection was that Core III had originally decided that you could not deduce template template arguments. Spicer concurred, however, since that decision some additional wording has been added that allows some deduction. Brück spoke out against removing a language feature at this stage and feels it would be better to address the German comment by specifying the semantics more fully. Gibbons confirmed that no NB comment asked for the feature to be removed. Unruh said that as originator of the comment, he would be satisfied by the addition of a single bullet that clarified how template template arguments interact with partial ordering. Spicer feels that since his users (mainly implementors) haven't asked for the feature, it's not necessary. Corfield countered that many other features haven't generated a torrent of requests either so it wasn't a valid argument. Stroustrup said we should be very wary of removing a language feature, particularly at this late stage. He also said that users don't ask for features they don't know about. Furthermore, removing template template arguments may well generate "no" votes - they were added at the request of a NB not present at this meeting and he felt that other NBs may also vote "no" because of this. Charney said he would rather we removed a feature than expand the semantics by an unknown amount. Glassborow said we should focus on addressing NB comments rather than making bigger changes that risk changing "yes" votes to "no" votes. Koenig said that ML has a similar language feature that was added because of user pressure and this convinces him that we should leave the feature in C++ too for future use. Gibbons finished by voicing concern about the defect reports we may get if we leave the feature in.

Straw vote to remove template template arguments failed: 13 yes, 18 no.

Gibbons said the feature stays so we still have to address the German comment.

Gibbons also mentioned two issues which were explicitly rejected, both of which were considered unnecessary extensions.

6.6 Library II (locale/iostream) WG

Schwarz presented the resolutions from his group. He said they have resolved every issue and produced a list of all the differences. They have also fully specified money_punct in a paper that has been prepared at this meeting but it is too early to go for a straw vote on it yet.

6.7 Other issues

Myers discussed an issue arising from overloading enums. The committee has in the past decided not to solve the following problem:

enum Error { OK };
struct Status { Status(int); };
bool operator==( Status, Error );
Error e = 
if ( e == OK ) // breaks

This used to work but a more conforming compiler will say it's ambiguous (because the builtin prototypes only support builtin types, not enums). Gibbons felt there was a solution to this that mirrors the ? : resolution (involving allowing conversions to builtin types). Spicer said that having to provide overloaded equality operators on third-party library enums to work around the problem is a bad idea. Colvin said that the example is the way that he (and many others) would want to wrap a lot of existing error handling code so he feels this needs fixing. Unruh felt that we could deal with this issue as a defect report if "most" of the problems that arise are that obvious code becomes ambiguous. Koenig concerned about C compatibility issues lurking beneath the surface. Welch voiced concern about adding extra builtin overloads because of the danger of introducing further subtle problems. Nelson showed a real example:

(enumval) == (charval) // is ambiguous because:
string::operator==( charval );
string::string( charval );

So the result was string( enumval ).operator==( charval ); Embarrassed laughter. A straw vote indicated that Core II should attempt to resolve this.

There was some discussion about when the revised WP would be available. Koenig said if the troff diffs are good then we may have a new draft within a week but there is no guarantee that the diffs will all work. Lajoie noted she has several editorial changes which are not in the diffs for voting but wants to incorporate those before the WP is distributed. Koenig said that might not be possible given the uncertainty of the diffs and his travel commitments. Unruh suggested an interim WP with the basic changes incorporated, followed by the WP with all the editorial changes and any other fixes incorporated.

6.8 Disposition of comments

Plum asked WG chairs to draft responses to the NB comments (or delegate someone to do it for them). For comments with which we agreed, this will be easy, but for comments that we rejected the responses should indicate the due care and attention that the committee applied to the issue.

Myers asked what we should do about errors we find in the document. Dawes said they should go on an issue list for later resolution. Unruh asked that any major issues be raised more visibly. Clamage suggested the reflector be used to discuss any such issues.

7. Distribution of formal motions

A list of the papers which would constitute the formal motions was distributed. The majority of the papers consisted of troff diffs that should be applied to the WP.

8. Review of the meeting

Clamage said this had been a very productive meeting and thanked everyone for their cooperation.

8.1 Formal motions

Spicer asked for clarification that the substance of the votes is effectively subject to editorial review. Clamage said yes. Koenig asked Clamage to confirm that the next meeting agenda will include a vote to approve the WP once at the end of the meeting since we are producing an interim WP only. Clamage agreed. Clamage then counted J16 voting members (29 out of a possible 34) and WG21 voting members (8).

Core I

1. Motion by Lajoie/Miller to adopt various small Core language changes:

Move we amend the WP as described in N1095 = 97-0057 "Core I WP Changes" by Lajoie, Miller, Nelson.

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

2. Motion by Lajoie/Stump to clarify copy elision:

Move we amend the WP as described in N1103 = 97-0065R1 "Copy Elision" by Lajoie

Motion passed J16: lots yes, 2 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

Core II

3. Motion by Adamczyk/Welch to adopt various small Core language changes:

Move we amend the WP as described in N1104 = 97-0066 "Core II WP Changes" by Adamczyk

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

3a. Motion by Adamczyk/Welch to clarify overload resolution:

Move we amend the WP as described in N1084 = 97-0046 "Change to lvalue/rvalue resolution of overload" by Adamczyk

Motion passed J16: 19 yes, 5 no, 5 abstain.
Motion passed WG21: 4 yes, 0 no, 4 abstain.

The WG21 vote caused some discussion. Gibbons explained his objection, saying that this is an incomplete solution and he felt the straw vote was not conclusive. Adamczyk said this is only one minor part of overload resolution and it is an attempt to get back to classic C++. Koenig felt that the vote indicates acceptance would be closer to consensus. Brück clarified that Sweden's abstention was based on not having strong feelings about the issue. Plauger said he felt the issue was clearly explained and the vote should stand - this is simply a difficult issue. Plum gave up trying to get procedural clarification on how to handle the WG21 vote and said we should move on. Gibbons wanted to clarify that the issue would be reviewed before New Jersey.

Core III

4. Motion by Lajoie/Gibbons to accept a revised clause 4 [templates]

Move we amend the WP by replacing clause 14 by N1089 = 97-0051 "Revised template clause" by Lajoie

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 7 yes, 0 no, 1 abstain.

Gibbons explained that this revision contained only non-controversial issues and that N1101 = 97-0063R1- to be voted on later - included the larger resolutions.

5. Motion by Spicer/Gibbons to clarify template argument deduction:

Move we amend the WP as described in N1090 = 97-0052 "Revised template argument deduction" by Spicer

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

6. Motion by Spicer/Lajoie to adopt various small clarifications to templates:

Move we amend the WP as described in N1092 = 97-0054 "Core III WP changes part 1" by Spicer

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

7. Motion by Brück/Corfield to change when default arguments are checked:

Move we amend the WP as described in N1093 = 97-0055 "Default arguments" by Stroustrup

Motion passed J16: 24 yes, 5 no, 0 abstain.
Motion passed WG21: 7 yes, 0 no, 1 abstain.

8. Motion by Gibbons/Lajoie to adopt various Core language clarifications:

Move we amend the WP as described in N1101 = 97-0063R1 "Core III WP changes part 2" by Gibbons.

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

Library I

9. Motion by Rumsby/Dawes to adopt various small Library changes:

Move we amend the WP as described in N1098 = 97-0060 "Library WP changes" by Rumsby

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

10. Motion by Rumsby/Dawes to adopt some Library clarifications:

Move we amend the WP as described in N1102 = 97-0064 "Other Library changes" by Rumsby

Motion passed J16: lots yes, 1 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

11. Motion by Unruh/Dawes to clarify what names the C library reserves:

Move we amend the WP as described in N1105 = 97-0067 "The C library and global names" by Plum

Motion passed J16: lots yes, 0 no, 2 abstain.
Motion passed WG21: 7 yes, 0 no, 1 abstain.

Library II

12. Motion by Schwarz/Andersson to clarify money and time format in locale:

Move we amend the WP as described in N1096 = 97-0058 "Clarification of locale money and time formats" by Myers, Kühl

Motion passed J16: lots yes, 0 no, 3 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

13. Motion by Schwarz/Andersson to adopt various small changes to locale:

Move we amend the WP as described in N1097 = 97-0059 "Changes to locale" by Plum

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

14. Motion by Schwarz/Rumsby to adopt various small changes to iostream:

Move we amend the WP as described in N1099 = 97-0061 "Changes to iostream" by Schwarz

Motion passed J16: lots yes, 0 no, 0 abstain.
Motion passed WG21: 8 yes, 0 no, 0 abstain.

15. Motion by Rumsby/Clamage to thank the hosts:

Move we thank Jean Stride and BSI for hosting the meeting, Programming Research for the reception, Glassborow and the ACCU for refreshments at breaks, Corfield and Object Consultancy Services for loan of computer equipment

Motion passed WG21+J16 by acclamation.

Plum collected softcopy of troff diffs from the remaining WG scribes who would not be at the editing session. Koenig said he would post a full list on the -all reflector of changes he has incorporated and scribes should check the message as an acknowledgement that their changes have been integrated. Plum said each group must also review the PostScript to ensure that all changes actually were integrated. We missed this step in Kona. Gibbons said if each troff change has a comment containing the NB comment identifier then a grep of the source would provide the appropriate list.

8.2 Review of action items, decisions made, and documents approved by the committee

The following issues have been deferred and need resolution at or before the New Jersey meeting in November:

Koenig reminded the committee of the outstanding problem with enum and overloading. This is a core issue (Core 889) and the WG21 representatives present in London were unanimous that the problem needs a resolution.

Dawes said that the LWG still needs to add explicit to some signatures (the exception and fpos constructors). This change is previously approved but not yet in the draft and addresses Germany's comment 191 and USA comment CD2-27-036.

Dawes noted there are also half a dozen "editorial" comments outstanding which include a couple of substantive but minor issues.

The committee will also consider further issues from the reflector and private email subject to unanimous consent of WG21.

Unruh raised the issue of auto_ptr again since this was controversial within WG21. He also noted that the resolution regarding C library and namespaces might not satisfy Germany.

Someone noted that the rvalue/lvalue overload resolution adjustment needs to be revisited after feedback from National Bodies.

8.3 Issues delayed until Friday

None.

9. Plans for the future

9.1 Next meeting

Koenig said the next meeting would be 9-14 November at Headquarters Plaza Hotel in Morristown, NJ hosted by AT&T. Clamage said the WG will complete resolution of CD2 ballot comments and produce the DIS for submission.

Koenig explained some of the facilities in Morristown, which sound excellent, and said the costs would be $110 for a single room, $125 for a double and $145 for "CEO level", excluding 6% sales tax. He said Newark (EWR) is the preferred airport not JFK.

9.2 Mailings

Miller said the usual schedules apply: 1st August is the deadline for post-London mailing.

9.3 Following meetings

Plum said it is hard to decide an agenda for the March '98 meeting yet. This will be the first time we have had to work with JTC1 for the letter ballot. Assuming all goes well, we should get the results of the ballot the week before the meeting. If the ballot passes we will still have work to do regards organization of the committee, future meetings, handling defect reports, special subgroups and so on. Should the process slip due to unforeseen problems in New Jersey, the March meeting will have excellent support for production of DIS.

That meeting will be in Sofia Antipolis, SE France. The French equivalent of silicon valley known as "telecom valley". Nice airport is 25km away. The meeting will be hosted by the University of Nice.

Motion by Corfield/Dawes:

Move we adjourn.

Motion passed WG21+J16: lots yes, 0 no.

The committees adjourned at 10:20 on Friday.

Appendix A

Name

Affiliation

M

T

W

Th

F

Becker, Pete

self

A

A

A

A

A

Dawes, Beman

self

V

V

V

V

V

Gibbons, Bill

self

V

V

V

V

V

Kühl, Dietmar

self

A

A

A

 

 

Langer, Angelika

self

A

A

A

A

A

Myers, Nathan

self

A

A

A

A

 

Koenig, Andrew

AT&T

V

V

V

V

V

Stroustrup, Bjarne

AT&T

A

A

A

A

A

Charney, Reg

Charney & Day

V

V

V

V

 

Sutter, Herb

CNTC

 

 

A

A

A

Comeau, Greg

Comeau Computing

V

V

 

V

V

Stump, Mike

Cygnus Solutions

V

V

V

V

V

Ward, Judy

Digital Equipment Corp

V

V

V

V

V

Whitman, Sandra

Digital Equipment Corp

A

A

A

A

A

Plauger, P. J.

Dinkumware Ltd

V

V

V

V

V

Plauger, Tana

Dinkumware Ltd

A

A

 

A

A

Brück, Dag

Dynasim AB

V

V

V

V

V

Adamczyk, Steve

Edison Design Group

V

V

V

V

V

Spicer, John

Edison Design Group

A

A

A

A

A

Jonsson, Fredrik

Ericsson Austria AG

V

V

V

V

V

Klarer, Robert

IBM

A

A

A

A

A

Lajoie, Josee

IBM

V

V

V

V

V

Lextrait, Vincent

ILOG

V

V

V

V

V

Colvin, Greg

IMR

V

V

V

V

V

Nelson, Clark

Intel

V

V

V

V

V

Sütö, Gyuszi

Intel

A

A

A

A

 

Schwarz, Jerry

Intrinsa

V

V

V

V

V

Andersson, Per

Ipso Object Software

V

V

V

V

V

Kumoluyi, Akin

Motorola

V

V

V

V

V

Corfield, Sean

Object Consultancy Services

V

 

 

V

V

Goldthwaite, Lois

Objectspace

A

A

 

 

 

Benito, J.

Perennial

V

V

V

V

V

Plum, Thomas

Plum Hall

V

V

V

V

V

Southworth, Mark

Programming Research

V

V

 

 

 

Wilcox, Tom

Rational Software Corp

V

V

V

V

V

Glassborow, Francis

Richfords

V

V

V

V

V

Smithey, Randy

Rogue Wave Software

V

V

V

V

V

Saks, Dan

Saks & Associates

V

V

V

V

V

Rouse, Jack

SAS Institute

V

V

V

V

V

Schilling, Jonathan

SCO

V

V

V

V

V

Austern, Matt

SGI

V

V

V

V

V

Unruh, Erwin

Siemens Nixdorf

V

V

V

V

V

Miller, William M.

Software Emancipation Tech

V

V

V

V

V

Clamage, Steve

Sun Microsystems

A

A

A

A

A

Crowl, Lawrence

Sun Microsystems

V

V

V

V

V

Welch, Jim

Sybase

V

V

V

V

V

Crowfoot, Norm

Xerox

V

V

V

V

V

Total Attending

 

46

45

42

44

41

Total Voting

 

34

33

31

33

32

Appendix B - J16 US TAG Meeting

Minutes of the U.S. TAG Meeting (recorded by William M. Miller)

 

The U.S. TAG convened immediately following the adjournment of the joint meeting of J16 and WG21, chaired by J16 IR Clark Nelson. Miller volunteered to record the minutes, since J16 secretary Corfield is not a member of the U.S. TAG. 25 of the 29 TAG members with voting rights were present, satisfying quorum requirements.

 

Nelson stated that the only business for the TAG at this meeting was to select the U.S. delegation for the next WG21 meeting. He explained that there had been requests that Beman Dawes be added to the delegation to represent the Library subgroup and that Benito had volunteered to leave the delegation. The suggested delegation of Clamage, Dawes, Koenig, Nelson, and Stroustrup was approved unanimously.

 

The U.S. TAG meeting adjourned at 10:25 a.m.