From rinehuls@access.digex.net Tue Dec 31 18:05:06 1996 Received: from access2.digex.net (qlrhmEbBUV1EY@access2.digex.net [205.197.245.193]) by dkuug.dk (8.6.12/8.6.12) with ESMTP id SAA01824 for ; Tue, 31 Dec 1996 18:04:40 +0100 Received: from localhost (rinehuls@localhost) by access2.digex.net (8.8.4/8.8.4) with SMTP id MAA20865 for ; Tue, 31 Dec 1996 12:04:36 -0500 (EST) Date: Tue, 31 Dec 1996 12:04:35 -0500 (EST) From: "william c. rinehuls" To: sc22docs@dkuug.dk Subject: SC22 N2369 - WG21 Minutes of November 1996 Meeting Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII _______________________beginning of title page ____________________ ISO/IEC JTC 1/SC22 Programming languages, their environments and system software interfaces Secretariat: U.S.A. (ANSI) ISO/IEC JTC 1/SC22 N2369 January 1997 TITLE: Minutes of SC22/WG21 (C++) Meeting on November 10- 15, 1996 in Kona, Hawaii, USA SOURCE: Secretariat, ISO/IEC JTC 1/SC22 WORK ITEM: N/A STATUS: N/A CROSS REFERENCE: N/A DOCUMENT TYPE: WG21 Meeting Minutes ACTION: To SC22 Member Bodies for information. Address reply to: ISO/IEC JTC 1/SC22 Secretariat William C. Rinehuls 8457 Rushing Creek Court Springfield, VA 22153 USA Tel: +1 (703) 912-9680 Fax: +1 (703) 912-2973 email: rinehuls@access.digex.net ___________________end of title page; beginning of text _________________ Document Number: WG21/N1041 X3J16/96-0223 Date: 3 December 1996 Project: Programming Language C++ Reply to: Sean A. Corfield sean@ocsltd.com WG21 Meeting No. 17 10 - 15 November 1996 The Royal Waikoloan Hotel Kona, HI USA 1. Opening activities Clamage convened the meeting as chair at 8:37 HST on Monday, 10 November 1996. Miller was vice-chair, and Corfield was the secretary. Plum Hall (represented by Plum) hosted the meeting. 1.1 Opening comments Clamage noted there were fewer members than we might have expected for a North American meeting but that there were some new members at this meeting. 1.2 Introductions Clamage announced that Corfield was taking over secretarial duties from Saks and the committee thanked Saks for all his hard work over the last seven years. Applause. 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 = 96-0001) 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 X3J16. (The joint membership is denoted WG21+X3J16 in these minutes.) Clamage explained the voting rules: In straw votes, all WG21 technical experts may vote, even those who haven't attended previous WG21 meetings. An X3J16 attendee may vote only if he/she is the voting representative of a member organization that has met the X3's meeting attendance requirements. (The voting representative is the principal member, or an alternate if the principal is not present.) A WG21 technical expert who is also an X3J16 voting member still casts only one vote in a straw vote. In WG21 formal votes, only the head of each national delegation may vote. In X3J16 formal votes, only one representative from each X3J16 member organization may vote, and only then if the organization meets the attendance requirements. Plum explained the facilities provided (and warned about the dangers of the sun). Plum noted that authors of proposals would have to copy their own documents at this meeting. This should reduce the number of proposals. Laughter. He explained that a Sparcstation is available but since it will be used to typeset the WP at this meeting it should not be used without permission from Koenig. Koenig noted that he can produce printed copies at any point during the week. Miller explained the procedure for document number allocation at this meeting. Miller asked that electronic copy of all documents produced at the meeting be provided to him before the end of the meeting. Diskettes have been provided for this purpose. 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 There were no position papers or progress reports. Work plans will be covered by item 1.6 below. 1.5 Approval of the minutes of the previous meeting Saks said that he had not received any corrections to the previous minutes. Motion by Rumsby/Lajoie: Move we approve N0952 = 96-0134 as the minutes of the previous meeting. Motion passed X3J16: lots yes, 0 no. 1.6 Agenda review and approval Clamage deferred this item until after discussion of the organisation of subgroups below. 1.7 Report on the WG21 Sunday meeting Plum summarised WG21's discussion about prioritising issues: if the consensus is that we are entitled to fix something, we can actually apply a fix, regardless of the resolution at Stockholm in support of a feature freeze. He noted that we should not search for editorial problems just for their own sake because fixing them might cause ripple effects and be destabilising. We should concentrate on locating and fixing what are deemed by consensus to be bugs. He reported that all NBs present were strongly in favour of ensuring we ship CD2 at the end of this week. 1.8 Liaison reports Benito presented the WG14 liaison report. long long has been officially adopted. Clamage asked what WG14's position is on removing implicit int. Benito replied that WG14 was in favour of removing implicit int and expected an affirmative vote at the next WG14 meeting. Benito noted that WG14 has adopted the general position not to accept any further language extensions in order to expedite the issue of C9X. He said that the translation limits concerning external names had been relaxed so that case is now significant and that the first 31 characters of names are significant. Brck asked about the sign of the remainder in division. Benito believes the resolution has been incorporated to adopt the FORTRAN approach. No other liaisons were present. 1.9 New business requiring actions by the committee There was no new business. 2. Working Paper for Draft Proposed Standard Koenig said he normally gives the Editorial report in General session but was happy to give it today. 2.1 Changes in the Working Paper Koenig said there were a large number of editorial volunteers who continued to work on the WP after the pre-Hawaii mailing. He said the numbers of changes are reducing so it looks like we are approaching closure. Koenig thanked everyone who helped with the editing. He noted that only a few "bold changes" were made this time and they were all in lib-iostreams. The relevant box numbers were 42(27.2), 45(27.3), 47(27.4.1), 49(27.4.5.1), 53(27.6.1.3), 55(27.7.1.3), 58, 60(27.8.1.4). Koenig said he will tighten up the tracking of changes to resolutions from this meeting onwards as it becomes more important to ensure no inadvertent changes get made. Plum confirmed that during this week only a limited number of hands-on editors will actually touch the document. Koenig encouraged those who could do so to review the WP in electronic form (PDF) rather than on paper "to conserve trees". Schwarz asked if we have a version of the WP as it is now rather than as it was in the mailing. Koenig said no, but he can easily produce such a version. Rumsby and Koenig agreed to liaise to produce PDF from the PostScript for distribution to those at the meeting who need it. Stanchfield asked for a plain ASCII text version to work from. Koenig said this may be possible but is very time-consuming. Motion by Lajoie/Dawes: Move we approve N0996 = 96-0178 as the current Working Paper. Motion passed X3J16: lots yes, 0 no. Motion passed WG21: 5 yes, 0 no, 0 abstain. 3. Organise subgroups, chapter editors, and chapter reviewers. Establish working procedures Clamage reiterated our intention to approve the current draft for submission as the second Committee Draft. The intent is to have two votes at the end of this meeting: * approve the modified draft prepared at this meeting as the current Working Paper, and * submit that Working Paper as the second Committee Draft. Dawes named the editors for the library clauses: Schwarz for iostreams, Rumsby and Dawes for the rest. Clamage said that Plum has the master list of editorial volunteers and asked that potential volunteers check with Plum. Clamage explained that nominated reviewers will examine each clause to ensure that the resolutions have been correctly incorporated and that no other substantive changes are made by accident. Lajoie said there would be three core groups at this meeting. They would meet separately on Monday and jointly on Tuesday. Dawes said that four library issues overlap with core group work but otherwise the library groups will work together. Clamage announced a technical session on allocators. Dawes will use the feedback from the technical session to direct the WG's discussion. Comeau asked Lajoie to explain the topics covered by each core group. Lajoie listed what each Core WG would be covering. Clamage noted that Benito would chair the C Compatibility WG in conjunction with the Core WGs. Lajoie said the C Compatibility issues are mainly to do with Annex C. Gafter asked whether there would be a Syntax WG. Lajoie said this would be handled by Core since there is only one outstanding issue. 3.1 Agenda review and approval Motion by Glassborow/Lajoie: Move we approve N1002 = 96-0184 (with agenda approval as item 3.1 instead of 1.6) as the agenda for this meeting. Allison asked for clarification prior to the vote. Clamage read out the agenda items because not everyone had a paper copy. Anderson asked if we would have straw votes at this meeting. Clamage said the process was intended not to need straw votes. He said two of the issues that might need further discussion are allocators and export/extern. Unruh suggested that we have straw votes on demand for potentially controversial issues in General session I. There was general agreement on this suggestion. Miller noted a change to X3J16 voting procedures. It is now permissible to abstain on technical and procedural votes. He noted that votes on motions such as affirming document transmittal still require no abstentions and a two-thirds plus one majority. Motion passed X3J16: lots yes, 0 no. Motion passed WG21: 5 yes, 0 no, 0 abstain. The committee recessed to WGs at 9:55 on Monday. 4. WG sessions 5. WG sessions The committee reconvened at 8:23 on Wednesday. 6. General session I Clamage explained that subgroup chairs will present briefly the issues to be incorporated and take questions. After each group of issues, we will vote on the whole group of proposals. Straw votes can be conducted on demand. Formal votes will be taken for each group of issues presented. C Compatibility (Benito) Benito said there were 11 editorial issues, three of which concerned Annex C. Benito said the Annex needs to be updated but the WG have not done so because the text is non-normative. Gafter asked whether we should vote on keeping versus removing the Annex. Benito said we have no volunteers to update the Annex. Benito noted that there was a UK NB comment that part of Annex subclause C.1 should be removed. Clamage asked if the WG made any changes. Benito said they have produced two documents listing changes made: N1035 = 96-0217 which lists the editorial core issues closed and N1036 = 96-0218 which documents the changes made to clause 16 (mainly changing the use of "shall"). Miller asked for clarification of some of the changes. Nelson said the WG clarified that #undef __STD__ is implementation-defined (because it is implementation-defined whether or not __STDC__ is actually predefined). Benito said no issues needed a committee vote. Library I (Dawes) Dawes presented the motions in N1020 = 96-0202. Dawes noted the following corrections to the distributed copy: In item 1, delete the two lines beginning: os.putc() in turn for... In item 2, the correct document number is N1018 = 96-0200. In item 4, the correct document number is N1017 = 96-0199. Dawes then discussed each item in turn. Item 1. He said the issues closed with no action (21-090, 21-095 and 21-111 from N1006 = 96-0188) were made moot by io-related issues closed in Stockholm. He said the proposed resolutions for 21-113, 21-115 and 21-116 corrected a typo, clarified the interaction of ios::width with strings and added a clear() member function. Corfield noted an error in the proposed resolution for operator<< effects: str.iterator should be: basic_string< ... >::iterator Item 2. Clarify that the exception string is required to have the same spelling but not necessarily to point to the same data. Item 3. Add a specific definition of "equivalence" relationship for EqualityComparable requirements and resolve several issues concerning utilies. Koenig asked for an explanation of the resolutions concerning auto_ptr<> because of the controversy on the reflector. Dawes said the issue of conversions was resolved by using "implicitly converted" which is a well-defined term in the WP. The second issue clarified the behaviour of repeated assignment. Colvin said the WP was contradictory in this area. The resolution is to clarify that repeated assignment of one auto_ptr<> object to another causes a dangling pointer. The third issue is the destructor: the resolution is to require that delete get() is a well-formed expression in order to instantiate the template. Dawes then explained the resolutions covering explicit declarations of copy constructors and assignment operators. Corfield asked for clarification as to why the default complex copy constructor and assignment operator are necessary. No one seemed to know. Myers commented that this motion adds a member (auto_ptr<>::operator=) that another motion proposes deleting. The motion was left unchanged. Item 4. Clarify which names are in namespace std and resolve some exception issues. Gafter asked for clarification of "library entities" mentioned in regard to names in namespace std. Dawes said this is defined in the previous paragraph. Unruh noted that the name std itself must be in the global namespace and that we should be clear that other nested namespaces are allowed (instead of just rel_ops). Corfield asked whether it would be clear that new & delete would be in the global namespace. Dawes said yes. The clarifications on exception handlers were non-controversial. Item 5. Remove wording inherited from C dealing with external linkage names in the library (since it is not necessary because the names live in namespace std). Unruh noted that an extern "C" linkage function in a namespace may affect the use of the name somewhere else (in the user program). We have no wording to cover this. Spicer asked whether the issue of extern "C" versus extern "C++" linkage for C library functions had been discussed. Dawes felt there was a lot of concern about this proposal and maybe he should withdraw it. Austern said the concerns expressed covered other clauses than those affected by this motion. Dawes wanted to drop item 5 from his motions. Spicer asked his question again. Dawes said there are no open issues regarding this unspecified linkage. Spicer explained that this means it is impossible to write a portable program using, e.g., qsort since we do not know the linkage of the pointer to function argument. Item 6. Clarify which namespaces are not extensible. Myers asked if we have specified what can be specialised. Dawes said yes. Item 7. Clarify intent of default argument specification on template member functions in the library. Ball noted that explicit should not be on all three constructors in the example. Plum said we expect this issue to be revisited during the CD2 ballot process. Corfield asked about the wording elsewhere concerning default constructible types in containers. Plum said this would also be revisited. Motion by Dawes/Rumsby: Move we modify the WP as specified in N1020 = 96-0202, items 1-4, 6, 7 (with the corrections noted above). Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Core I (Lajoie) Lajoie presented the motions in N1031 = 96-0213. Item 1. Resolve Core issue 666 and clarify that a namespace name does not hide a class name used as a base class or in an elaborated-type-specifier. This was non-controversial. Item 2. Resolve Core issue 727 and clarify which namespace block extern declarations refer to. O'Riordan asked what "have linkage" means. Miller explained that it meant the declaration will not have "no linkage" and this is made clear by the following text. Item 3. Clarify semantics of friend declarations in local classes. Gafter felt this was a complicated proposal solving a minor problem and would prefer to deprecate or remove friends in local classes. Lajoie said this motion clarified the pre-Stockholm intent. Gafter asked for a straw vote on a friendly amendment to deprecate friends in local classes. Lajoie said no. Plum reiterated our charter for this meeting and said that Gafter's suggestion was outside that charter despite being a reasonable one. Item 4. Resolve Core issue 674 and clarify class name lookup and ambiguity in the presence of using-declarations. This was non-controversial. Item 5. Resolve issue 675 and clarify the definition of final overrider in the presence of using-declarations. Ball was surprised that the resolution was different to what had been agreed in the Core WG (to make the proposed usage ill-formed). Gafter said some members of the WG later decided this was too strict and so the proposal just clarifies that using-declarations cannot affect final overriding. Lajoie said we could vote on this separately if the committee wants. Ball expressed concern about this change from the WG's resolution. Glassborow said the WG making the usage ill-formed would break a lot of code since this style of using-declaration should be a standard idiom to bring in names from base classes. Plum asked whether this was a NB issue. Lajoie said no, it was a core issue. She said the WG identified this as a bug in the WP. Anderson said he shared Ball's concern but felt we should accept the clarification because it matches the behaviour of final overriders with access declarations. Lajoie asked for a straw vote for incorporating this change in the motions but keeping it on the issues list. The straw vote passed: 17 in favour / 5 opposed / 5 none. Item 6. Resolve Core issue 700 and indicate that a diagnostic is not required when a function or object is used but not defined. Corfield asked why no diagnostic was required. Unruh said that a use in dead code should not require a diagnostic. Brck asked if the WP is clear but said he felt this is a desirable change anyway. Lajoie said yes the WP was clear but considered by the Core WG to be unworkable. Miller clarified that it restores the pre-Stockholm intent for virtual functions. We do not want to require definitions for unused virtual functions. Koenig asked for confirmation that "undefined behavior" was considered an improvement. Plum believes there are a dozen instances where the WP expects the linker to diagnose problems so this change makes very little difference. He also said that this change would help just-in-time development environments or interpreted systems. Plum asked if we should consider requiring that a diagnostic appears "at some time" prior to calling the undefined function but was not sure what approach we should take. Gafter said this muddles the phases of translation. Anderson felt the wording in the proposal should refer to wording for inline functions. Lajoie agreed that the wording could be improved. Lajoie said that we will be revisiting conformance issues during the CD2 ballot process (since it is a long-standing NB issue) so the issue of diagnostics will come up again. Glassborow was unhappy that we seemed to be pushing more fixes into the CD2 ballot period. Item 7. To only require a static member to be defined if it is used. Lajoie explained that this helps templates because static data members do not need to be instantiated. Glassborow objected that this removes a way of providing constraints on templates. Ball said this was taking advantage of an implementation quirk. Gibbons said the status quo effectively requires that unnecessary instantiations and attendant side effects take place and we should remove this requirement (i.e., accept the proposal). Item 8. Resolve Core issue 728 and clarify how linkage-specifications affect object declarations and definitions. Lajoie said this follows the ARM. Corfield asked for clarification that the proposed wording really did match the WG resolution. Miller and Lajoie confirmed that it did. Unruh suggested a better example be provided in the WP text. Item 9. Resolve Core issues 635 and 725, render recursive local static initialisation undefined and allow early initialisation. Unruh asked for clarification that this matches the rules for names in namespace scope. Gafter said yes. Item 10. To clarify when an implementation may create temporaries. Lajoie explained the the motion clarifies precisely when temporaries may be created and when their lifetimes are longer than the full expression. In response to O'Riordan's earlier comment, Miller noted that the omission of the external linkage specification on item 2 above was an editorial slip on his part. Motion by Anderson/Lajoie: Move we amend the WP as specified in N1031 = 96-0213. Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Lajoie presented another motion from an unnumbered paper distributed at the meeting. The motion proposes that a program be ill-formed if an unambiguous, accessible delete operator cannot be found using the usual lookup rules at the point of definition of the destructor. Corfield asked for clarification that the proposal breaks a useful idiom concerning declaring operator delete() private in a base class in order to restrict dynamically allocated uses of a class. Lajoie said yes. Motion by Lajoie/Hartinger: Move we amend the WP to clarify accessibility and name lookup of operator delete(). Motion passed X3J16: 18 yes, 3 no, 9 abstain. Motion passed WG21: 3 yes, 1 no, 1 abstain. Core II (Adamczyk) Adamczyk presented the motions in N1033 = 96-0215. The first few issues covered small corrections to the handling of cv-qualification. Adamczyk explained that these mainly covered incorrect handling of void* and multi-level pointer cases by introducing the term "cv-qualification signature". Schwarz asked if this made pointer comparisons more compatible with C. Adamczyk said yes. Adamczyk explained the proposed clarification that no lvalue-to-rvalue conversion occurred for void expressions because of extra cases where C++ produces lvalues. In some of these extra cases, such conversions are undesirable. This introduces a minor difference from C for volatile variables: volatile int i; i; /* fetched in C */ // not fetched in C++ Adamczyk then clarified that (void)x; is same as the implicit case x;. Koenig asked for clarification of the following: struct x; x& f1(); x f2(); f1(); // OK, value not used f2(); // ill-formed (still) Adamczyk said yes this is the proposed behaviour. The next item is a clarification that cv-qualification is significant on member function calls when constructing the candidate set. The last item adds a pseudo-prototype for ->*. Unruh expressed concern about overload resolution being correct for this prototype. Gafter said that there will (still) be ambiguous cases but this is probably a better formulation. Adamczyk said that Core II left the pseudo-prototype for ?: broken but these cases will be revisited during the ballot process. Corfield asked for confirmation that the delayed issues will be put forward through public comment / NB comment channels. Adamczyk said that was his intent. Unruh said he is unconvinced that the current ->* prototype is wrong. Adamczyk dropped that motion. Schwarz expressed concern over the amount of churn in pseudo-prototypes and asked whether we should just leave them alone. Adamczyk basically agreed but said the WG is trying to fix only those problems that are genuinely considered to be broken. Schwarz asked how broken something has to be. Adamczyk said if it broke a "simple" example it was considered broken enough. Brck said we don't have time to discuss what is broken but only what can be fixed. Motion by Welch/Lajoie: Move we amend the WP as specified in N1033 = 96-0215 (without the motion concerning the pseudo-prototype for ->*). Motion passed X3J16: lots yes, 0 no, 2 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Core III (Gibbons) Gibbons presented the motions in N1032 = 96-0214. Item 1. Clarify the semantics of uncaught_exception(). Welch asked for clarification that uncaught_exception() remains true when there are nested exceptions active even when the top exception is caught. Gibbons said yes. Hartinger asked for clarification that this only applies to implicit calls. Gibbons said yes, because the library already specifies that user calls have different semantics. Stanchfield asked for clarification that user calls to terminate() do not affect the result uncaught_exception(). Gibbons said yes. Item 2. Clarify the semantics of dynamic_cast<>(). Ball made a correction to the motion by inserting "public" before "unambiguous base class". Gibbons explained the intent of the motion was simply to fix a bug in the WP. Item 3. Clarify the semantics of throwing an array or function type. Gibbons explained that the motion clarifies that array to pointer and function to pointer-to-function conversions occur at the point of the throw. Gafter asked why the existing wording for conversions was not used. Gibbons said this was editorial. Brck asked whether catch of an array type could catch a pointer thrown by a throw. Gibbons said yes, just like a function parameter declared as an array can accept a pointer. Spicer said this was existing practice (because you have to do the decay on the throw expression anyway). Gafter corrected the motion by deleting "pointer to" from the return type of the result of converting the function type. Item 4. Clarify when templates are instantiated during a trial parse. Unruh said the proposed wording was contradictory. Gibbons agreed that the wording was imprecise. Unruh said semantic analysis is required during trial parse. Gibbons agreed and said the wording needing revising. Item 5. Clarify the interaction of using-declarations and default arguments. Gibbons used the following example to illustrate the resolution: namespace A { void f(int); } using A::f; namespace A { void f(int = 0); } void g() { f(); // proposed to be valid } A previous unintentional change had made this ill-formed because it did not take any subsequent declaration's default argument into account. Item 6. Clarify when overload resolution causes class template instantiation. Corfield asked why the WG left it unspecified. Gibbons said that in the general case it is not guaranteed that overload resolution can determine this in any reasonable time-it is a tradeoff. Hartinger asked if this was a portability problem. Ball said the same function is always selected but whether or not an ill-formed instantiation is attempted is implementation-defined (so a program may compile on one system but not on another). Item 7. Clarify the set of names considered for dependent lookup. Miller thought that namespace of an enumerator should be added in to the set. Gibbons said the WG felt this was unnecessary complexity for a corner case. Unruh wanted clarification of when no namespaces are considered. Gibbons agreed this is editorial. Item 8. Clarify exception type matching. This was non-controversial. Item 9. Clarify that member templates do not suppress the implicit copy constructor and assignment operator. Corfield asked for confirmation that this was the resolution of the WG in Stockholm that had not been adopted into the WP. Gibbons said yes. Item 10. Specify additional contexts where a dependent qualified name is assumed to be a type. Gibbons showed the following example: template struct A { struct B { B(int); }; } template struct C : A::B { // typename not allowed here C(); }; Gibbons explained that the grammar does not allow typename here but the context requires a type. The resolution is to assume it is a type. Similarly for base class mem-initialisers since these are also known to be types by context although typename is not allowed by the grammar. Gafter asked what happens if something assumed to be a class type turns out to be a namespace. Gibbons said that such names cannot appear in dependent qualified names. Item 11. Clarify that friend class T; not permitted. This was non-controversial. Item 12. Clarify that "reference to function" and "pointer to member" types can have exception specifications. Gibbons said this was a simple omission and should be considered editorial. Item 13. Clarify that dereferencing a pointer to member requires a complete class type. This was non-controversial. Item 14. Clarify that types in exception specifications must be complete. Ball noted that this was already fixed in the November WP. Item 15. Add "export" to list of keywords. Gibbons said he would discuss this decision in more detail later. Item 16. Correct the grammar specification involving templates. Lajoie asked about where template is allowed in qualified names. Gibbons said the proposed changes to the grammar were not substantive so if that isn't specified, this proposal would not fix that. Lajoie said she would investigate further. Motion by Ball/Spicer: Move we amend the WP as specified in N1032 = 96-0214 (with the corrections noted above). Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Gibbons said the issue of export versus extern did not need a vote. At Stockholm we agreed to adopt export and revisit the issue in Kona. Gibbons explained that the WG discussed the choice of keyword at length and felt that extern is too confusing. The WG agreed that export might break code. Gibbons noted that this may come up again in a NB comment so he will provide a document in the post-Kona mailing N1034 = 96-0216 detailing the discussions of the WG. Myers expressed his dissatisfaction with the subtle difference between export and extern. Library - allocators (Austern) Austern presented N1027 = 96-0209 which is a motion to adopt the changes proposed in N1021R1 = 96-0203R1 (not N1008 as stated in the version of N1027 initially presented). Austern said there are several small non-controversial changes. Corfield noted that at least one member of the committee (not present in Kona) feels the restrictions on reference and const_reference are controversial. Austern explained the proposed restrictions placed on allocators by the standard containers. Brck feels that it is not clear which problems in N1011 = 96-0193 are solved by this proposal and asked that Austern write a document clarifying this. Austern agreed that this was a good idea. Brck was concerned that the specification "pointer to T" was not clear however he feels that the proposal is an improvement over the WP. Dawes asked whether the small WG involved in writing the proposal was in agreement. Austern said yes but Corfield disagreed. Corfield felt the proposal was too restrictive but there was an agreement that Austern and Corfield would work on specifying the requirements on pointer and const_pointer with a view to submitting comments through NB channels during the CD2 ballot process. Clamage observed that everyone involved agreed that they can live with the compromise. Dawes asked Plauger for his opinion on the proposal. Plauger said he was pleased with the progress made and he is in favour of the proposal. Brck noted that the proposal does not satisfy his requirements. General acknowledgement of Koenig's role in helping establish consensus on this issue. Rumsby called a caucus of the UK delegation to discuss the proposal prior to the vote. Motion by Allison/Corfield: Move we amend the WP as specified in N1021R1 = 96-0203R1. Motion passed X3J16: lots yes, 0 no, 2 abstain. Motion passed WG21: 3 yes, 1 no, 1 abstain. Library II (Becker) Becker presented the motions in N1023 = 96-0205. Becker explained that the motions were mostly editorial and minor bug fixes. Motion 1. Close some issues from N1014 without taking action. Motion 2, Item 1. Clarify that containers copy their comparison object. Item 2.. Clarify that pointers to functions may be used where comparison objects are mentioned. Schwarz asked whether an object with a conversion to function type would work. Becker said no, conversions are not performed for () operations. Item 3. Correct the Returns section for operator<< on bitset. Item 4. Clarify the semantics of the bitset constructor taking a string. Myers noted that the bitset constructor needs to be a template member constructor. Becker agreed to revisit this later. Item 5. Clarify the semantics of capacity(). Item 6. Clarify vector<>::assign() description by renaming the template parameter. Item 7. Make the value comparison operators on map and multimap into const member functions. Item 8. Correct a typo in the Effects section of resize() in several places. Item 9. Correct a typo in the declaration of the reverse_iterator member typedef in several places. Item 10. Systematically replace the remaining uses of distance_type with difference_type. Austern asked when the decision was made to use difference_type instead of distance_type. Becker said people felt it was more important to have a consistent name. Schwarz asked why we were making an essentially aesthetic change at this stage. Myers obtained clarification that iterators used distance_type and everything else used difference_type. Plauger disagreed and said the use of the two type names was not that clear cut. Brck asked specifically whether there was a reason to keep them distinct. The answer appeared to be no. Becker called a straw vote on changing distance_type to difference_type: Straw vote passed: 23 yes, 2 no. Becker said the change to the bitset constructor will be dropped from the motion (issue 23-068). Motion by Rumsby/Colvin: Move we amend the WP as described in N1023 = 96-0205 without the resolution to issue 23-068. Motion passed X3J16: lots yes, 0 no, 0 abstain, Motion passed WG21: 5 yes, 0 no, 0 abstain. Becker presented the motions in N1024 = 96-0206. Motion 1. Close issue 24-021 from N1015 = 96-0197 without action. Myers asked for clarification of 24-021. Becker said that stream iterators would remain in the header . Corfield asked why. Becker said the WP is not broken and moving types between headers might break something. Motion 2, Item 1. Clarify intent of proxy class. Becker noted that 24-038 has a revised resolution compared to the paper. Instead of removing the proxy class altogether, the concept of a proxy class remains but the name is no longer specified (i.e., it does not have to be called proxy). Item 2. Clarify that insert_iterator and ostream_iterator post-increment operators must return a reference rather than a value. Plauger noted that this was necessary in order to make the operators implementable. Item 3. Resolve issue 24-044 by adding typedefs to the iterator traits. Becker explained that this makes reverse iterators easier to implement. Item 4. Resolve issue 24-045 by adding semantics for istream_iterator and ostream_iterator. Item 5. Specify the missing semantics in Table 86, 24.1.5 [lib.random.access.iterators]. Motion by Rumsby/Glassborow: Move we amend the WP as specified in N1024 = 96-0206 (with the amended resolution to 24-038). Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Becker presented the motion in N1025 = 96-0207. Becker said this was a decision to retain the status quo by not moving some algorithms into utilities and closes issues 25-015, 25-016 and 25-017 from N1016 = 96-0198. Motion by Colvin/Rumsby: Move we retain status quo on the location of these algorithms. Motion passed X3J16: lots yes, 0 no, 1 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Becker presented the motions in N1026 = 96-0208. Becker said these are mostly editorial changes to numerics. Item 1. Clarify the description of the valarray destructor. Koenig said we could encourage implementations to return memory by using "should". There was no general support for this. Saks suggested the wording "may invoke a deallocation function". Brck asked that we not wordsmith in full committee. Item 2. Remove free(). Item 3. Change signature of resize() to have a value parameter instead of a reference parameter. Corfield asked whether this affects any other resize() members. Becker said all the others have value parameters already. Item 4. Close issue 26-055 by correcting the description of shift and rotate operations. Motion by Rumsby/Dawes: Move we amend the WP as described in N1026 = 96-0208. Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Library III (Schwarz) Corfield noted the document numbers said 95- instead of 96-. Schwarz will correct these for the mailing. Schwarz presented the motions in N1029 = 96-0211. Item 1. Add Allocator parameter to use of basic_string. Ward corrected the declaration of the template to: template bool operator()(const basic_string& s1, const basic_string& s2) Item 2. Clarify the widen/narrow operations on basic source character set. Item 3. Add unshift() member function to codecvt. Schwarz mentioned the impact on seek() (in a later proposal). Plauger felt that seek() did not need this change. Schwarz said there was otherwise no way to write the "magic" (i.e., unshifting) characters out at the right place. Myers argued that writes on seek() already happen (when a buffer is flushed) and this is very similar. Plauger argued that this change is a very bad idea-seeking and writing over a multibyte file is "asking for trouble". Motion by Schwarz/Brck: Move we amend the WP as described in N1029 = 96-0211. Motion passed X3J16: lots yes, 0 no, 1 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Schwarz presented the motions in N1028 = 96-0210. Item 1. Fix typedef of iostream. Item 2. Add typedef for wiostream. Item 3. Ensure initialisation of predefined streams. Schwarz noted that a footnote will be added encouraging implementors to initialise the streams "as early as possible". Item 4. Eliminate requirement that predefined streams be unbuffered. Schwarz explained that the phrase "unbuffered" should be removed from several locations because it misleads users. Plauger asked for confirmation that the streams are still synchronised. Myers said yes. Item 5. Add #include to and remove the forward declarations. Item 6. Describe failure of iword and pword. Make iword and pword set badbit on failure. Schwarz noted that even if these functions fail, the WG agreed that they should return valid references (this is not reflected in the proposed WP changes). Myers noted that the returned reference must refer to zero-initialised memory. Schwarz agreed to correct the motion. Item 7. Fix definition of ios destructor. Item 8. Remove use of traits::newline and change get to avoid default argment. Item 9. Fix reference to failbit. Item 10. Fix a typo. Item 11. Replace traits::newline with widen('\n'). Item 12. Fix argument of setfill to match Stockholm resolution. Item 13. Correct template arguments in uses of basic_string. Item 14. Add declaration of fstream and wfstream typedefs. Item 15. close() should flush and use unshift(). Item 16. filebuf::seekoff should understand codecvt. Item 17. Change semantics of seek() for variable encodings. Schwarz withdrew the change to seek() that would have called unshift(). Myers asked where the wording was to ensure seek() flushed the buffer. Schwarz agreed to add it. Item 18. Specify filebuf::sync and add precondition for filebuf::imbue. Historically this is for throwing away lookahead characters but it doesn't really work so the semantics of sync() now make that clear. Schwarz noted that there was a missing phrase in the WP text proposed. Motion by Schwarz/Stanchfield: Move we amend the WP as described in N1028 = 96-0210 (without the change to the semantics of seek()). Motion passed X3J16: lots in yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Schwarz presented the motion in N1030 = 96-0212 that fixes a typo in Annex D. Motion by Schwarz/Brck: Move we amend the WP as specified in N1030 = 96-0212. Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. Library II (Becker) Becker presented a motion with the revised bitset constructor declaration. He noted the detailed text in the WP is correct but the synopsis is wrong. This motion corrects the synopsis. Motion by Allison/Brck: Move we amend the WP to correct the constructor synopsis for bitset. Motion passed X3J16: lots yes, 0 no, 0 abstain. Motion passed WG21: 5 yes, 0 no, 0 abstain. 7. Preparation of the new DWP Dawes asked Library I and II to meet and work on editorial and review actions for the WP. Lajoie asked that Core get together as well. Koenig described the review procedure he wants to have actioned. He will provide a baseline against which each editor should produce diffs. He described exactly the procedure he wants everyone to follow. He noted that differences on printed copies will be against the 7 November version made available at this meeting but in the post-Kona mailing-IF WE PRODUCE ONE-will be against the pre-Kona version. Plum clarified that we will produce review copies of the modified WP in PDF form on diskettes. Rumsby, Clamage and Koenig will deal with this translation. Allison asked that a paper copy be made available in the "office". There was a lot of discussion about the process at this meeting in terms of ensuring that what we end up voting on as the WP reflects the resolutions we have voted on today. Plum explained that we will exercise due diligence but ultimately we will be voting on one document which we must assume (or have checked) matches the resolutions. Corfield confirmed that all the resolutions will be documented in the minutes. Dawes asked who will edit the Annex clauses. Schwarz will edit Annex D. Benito will edit Annex C. The committees recessed at 17:00 on Wednesday. X3J16 reconvened at 9:20 on Thursday. Review public comments Clamage asked for a show of hands to count voting members of X3J16. 24 hands were raised. Clamage explained that the purpose of this session was to review and confirm the response to the public comments. Motion by Miller/Lajoie: Move we accept N1003 = 96-0185 as the response to public comments. Clamage asked for discussion and corrections. Motion to amend by Gafter/Welch: Move we amend N1003 = 96-0185 as described in in N1009 = 96-0191. The amendment passed X3J16: lots yes, 0 no. Gafter noted that one of the responses is no longer correct because of changes made to the working paper recently. The response concerns C Linkage (page 4, right hand column, item 4). Gafter suggested that it should read: "Rejected. All conforming C++ implementations are required to support extern "C" as defined by the standard, however an implementation is not required to support a C implementation that interoperates with it." Plum felt we should not attempt to go beyond what is necessary for our stated procedure. There is no normative requirement that the responses be correct. He noted that we may yet find more errors in our responses but we should not spend too much time on this. Koenig asked if we can provide a cover letter indicating that the response was to CD1 comments and that events since may have changed the status of the responses. There was agreement on this. Motion by Gafter/Koenig: Move we amend N1003 = 96-0185 as described above. The amendment passed X3J16: 17 yes, 1 no, 6 abstain. The formal vote on the amended motion was then taken. The amended motion passed X3J16: 27 yes, 0 no, 0 abstain. X3J16 recessed at 10:30 on Thursday. WG21+X3J16 reconvened at 9:15 on Friday. 9. Review of the meeting Clamage expressed his pleasure at how well the meeting has progressed. Applause. 9.1 Formal motions Plum clarified that the motions are advisory and therefore do not require the two-thirds plus one vote for X3J16. Koenig asked reviewers to sign the diff documents. Plum suggested that the minutes record the editor and reviewers for each clause. Koenig agreed to provide that information to the secretary. Plum said the intent is to show we followed due diligence. Koenig confirmed that he received edits from the nominated editors and that each clause was reviewed by one or more reviewers. Clause Editor Reviewer(s) intro Miller Nelson lex Miller Nelson basic Lajoie Unruh and others conv Adamczyk Miller expr Adamczyk Miller stmt Adamczyk Miller dcl Lajoie Unruh decl Adamczyk Miller class Lajoie Unruh derived Lajoie Unruh access Adamczyk Miller special Lajoie Unruh over Adamczyk Miller template Gibbons Unruh except Gibbons Brck cpp Plum Benito lib-intro Rumsby review group lib-support Rumsby review group lib-diagnostics Rumsby review group lib-utilities Rumsby review group lib-strings Rumsby review group lib-locales Schwarz Myers lib-containers Rumsby review group lib-iterators Rumsby review group lib-algorithms Rumsby review group lib-numerics Rumsby review group lib-iostreams Schwarz Myers gram automatic limits unchanged diff Plum Benito future Schwarz Myers extendid unchanged The "review group" was: Austern, Becker, Clamage, Colvin, Dawes, Henricson, Myers, Ward. Clamage asked Corfield to perform a roll call from the attendance list. Corfield confirmed there were 32 voting members of X3J16 and 5 WG21 delegations present. 1) Motion (to accept the WP) by Becker/Rumsby: Move we accept N1037 = 96-0219 as the current WP. Wilcox asked what we should do about typos, specifically that export is missing from the keyword list. Koenig said if we make changes we need to reissue the document or we can leave the changes until we correct other problems with the CD. Clamage said we should treat the WP as "the best we can do so far". Motion passed X3J16: 32 yes, 0 no. Motion passed WG21: 5 yes, 0 no. 2) Motion (to authorise convenor to submit the Committee Draft) by Brck/Lajoie: Move we authorise the WG21 convenor to submit the WP to SC22 for registration as a Committee Draft and for subsequent CD Ballot. Motion passed X3J16: 32 yes, 0 no. Motion passed WG21: 4 yes, 1 no. 3) Motion (to thank the host) by Corfield/Clamage: Move we thank Plum and Plum Hall for hosting the meeting Motion passed WG21+X3J16 by acclamation. 9.2 Review of action items, decisions made, and documents approved by the committee Clamage opened the committee of the whole. There were no action items. The committee approved N1037 = 96-0219 and decided to submit that as the second Committee Draft. 9.3 Issues delayed until Friday There were no items delayed until Friday. 10. Plans for the future 10.1 Next meeting The next meeting will be 9-14 March '97, Nashua, NH, hosted by Digital Equipment Corporation. Clamage noted that X3J16 will review public comments and determine its response by the end of that meeting in order to determine its position for the ISO ballot which closes shortly after the meeting. Plum said that WG21 is allowed to review the NB comments but not to make decisions at that point (because the ballot is still open). He said the agenda is very aggressive and there will need to be a US TAG meeting during the Nashua meeting. Welch suggested that a pre-meeting X3J16 get together would be useful to start reviewing the public review comments. Miller asked whether we knew if the CD would be available for the public review in electronic form. Plum said we had clear guidance for CD1 to distribute electronically however there is some uncertainty as to the status of this form of distribution. He said we don't know the answer. Clamage will follow this up with X3. Hartinger asked whether NBs can distribute copies within their committees. Clamage said yes. Plum noted that Rumsby's web and ftp site is within ISO guidelines because it is password protected and the password is restricted to members of the ISO/ANSI working groups. 10.2 Mailings Plum said X3J16 members are covered by X3 document distribution. He said there are about 14 or 15 WG21 members for whom he provides distribution as convenor. Plum noted that Ireland has joined SC22 as a P member. Miller said that a few documents distributed at this meeting are still missing from his collection. He noted the deadline for the post-meeting mailing is 29 November. Koenig asked what format the Working Paper should take in the post-meeting mailing. Clamage said that budgetary constraints mean that the WP cannot go in the post-Kona mailing and must go in the pre-Nashua mailing. Koenig asked whether that WP should be 1-up, 2-up or 4-up. Glassborow suggested the electronic copies be in all three formats. Miller noted that a 4-up copy might not photocopy as well as 2-up. Plum said the preference expressed at the last SC22 plenary was that large documents cease to be distributed on paper at some point. Plum said perhaps we should not distribute a paper copy of the WP since we already have to produce a paper copy of the CD. Lajoie said a few committee members do not have email or 'net access. Plum said the message from ISO appears to be that without web and ftp access, people will find it hard to participate in standardisation. Dawes wanted clarification that Rumsby can place the WP on the web site even when it is not part of a mailing. Unruh asked that both the CD without editorial boxes and the WP with editorial boxes be made available electronically. Rumsby said this would happen. Corfield asked Plum to clarify margins etc for A4/US Letter documents. Plum said authors should ensure their margins are wide enough to be printable on both forms of paper. There was a long discussion about document formats. Brck asked that the discussion be taken offline so we can get on with committee business. Lajoie asked about the procedure for handling public comments. Clamage said we have not decided on procedures yet. 10.3 Following meetings The following meetings are planned: 13-18 July '97, Guildford, UK, hosted by Programming Research Ltd 9-14 November '97, somewhere near Murray Hill, NJ, hosted by AT&T 8-13 March '98, Sophia Antipolis, France, Ilog 5-10 or 12-17 July '98, Rochester, NY, Xerox 8-13 November '98, somewhere near Menlo Park, CA, Sun Koenig said there were three alternatives for the November '97 meeting: Morristown (or a similar small town) New York (more interesting but more expensive) a location somewhere in the country Many members expressed opinons that the meeting should not be in New York. Clamage closed the committee of the whole. Motion by Brck/Charney: Move we adjourn. Motion passed WG21+X3J16: lots yes, 0 no. The committees adjourned at 10:10 on Friday. Appendix A - Attendance Name Affiliation M T W Th F Dawes, Beman Self V V V V V Henricson, Mats Self A A A A Myers, Nathan Self A A A A A O'Riordan, Martin Self A A A A A Koenig, Andrew AT&T Research V V V V V Becker, Pete Borland V V V V V Tooke, Simon Canada A A A A Charney, Reg Charney & Day V V V V V Comeau, Greg Comeau Computing A A A A A Ward, Judy Digital Equipment Corporation V V V V V Plauger, P.J. Dinkumware Ltd A A A A A Brck, Dag Dynasim AB V V V V V Andrews, Graham Edinburgh Portable Compilers V V V V Adamczyk, Steve Edison Design Group V V V V V Anderson, Mike Edison Design Group A A A A A Spicer, John Edison Design Group A A A A A Jonsson, Fredrik Ericsson V V V V V Gibbons, Bill Hewlett Packard V V V V V Lajoie, Josee IBM V V V V V Colvin, Greg IMR V V V V V Nelson, Clark Intel V V V V V Suto, Gyuszi Intel A A A A A Schwarz, Jerry Intrinsa V V V V V Andersson, Per Ipso Object Software V V V V V Stuessel, Marc IST GmbH V V Allison, Chuck LDS Church V V V V V Munch, Max Lex Hack & Associates A A A A A Stanchfield, Scott Metaware Inc V V V V Corfield, Sean Object Consultancy Services V V V V V Benito, John Perennial V V V V V Plum, Tom Plum Hall V V V V V Wilcox, Thomas R. Rational Software V V V V V Glassborow, Francis Richfords V V V V V le Moul, Philippe Rogue Wave Software A A A Smithey, Randy Rogue Wave Software V V V V Saks, Dan Saks & Associates V V V V V Wengler, Christian SET Software Consulting GmbH V V V Hartinger, Roland Siemens Nixdorf V V V V V Unruh, Erwin Siemens Nixdorf A A A A A Austern, Matthew Silicon Graphics V V V V V Miller, William M. Software Emancipation Tech V V V V V Ball, Mike Sun Microsystems V V V V Clamage, Steve Sun Microsystems A A A A A Gafter, Neal Sun Microsystems A A A V Rumsby, Steve UK A A A A A Baisley, Donald E. Unisys V V V V V Welch, Jim Watcom V V V V V Total attendance 44 44 46 38 44 Total votes 31 30 32 27 32 ___________________ end of document SC22 N2369 _________________________