ISO/ IEC JTC1/SC22 N2369

Date: Tue, 31 Dec 1996 12:04:35 -0500 (EST)
From: "william c. rinehuls" <>
Subject: SC22 N2369 - WG21 Minutes of November 1996 Meeting

_______________________beginning of title page ____________________
Programming languages, their environments and system software interfaces
Secretariat:  U.S.A.  (ANSI)


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


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

___________________end of title page; beginning of text _________________

                                        Document Number:    WG21/N1041
                                        Date:               3 December 1996
                                        Project:            Programming
Language C++
                                        Reply to:           Sean A. Corfield

                            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.

    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
    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
    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(,
    53(, 55(, 58, 60( 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

    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,
    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
    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
    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:


    should be:

        basic_string< ... >::iterator

    Item 2. Clarify that the exception string is required to have the same
    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

    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

    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

    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
    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
    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

    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
    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
    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

    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

        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.
    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
    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
    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

    Corfield asked why the WG left it unspecified. Gibbons said that in the
    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<class T> struct A {
            struct B { B(int); };
        template<class T>
        struct C : A<T>::B {    // typename not allowed here

    Gibbons explained that the grammar does not allow typename here but the
    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

    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
    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

    Austern explained the proposed restrictions placed on allocators by the
    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

    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
    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

    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

    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 <iterator>. 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

    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

    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

    Item 5. Specify the missing semantics in Table 86, 24.1.5

    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

    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<class charT, class Traits, class Allocator>
        bool operator()(const basic_string<charT,Traits,Allocator>& s1,
                        const basic_string<charT,Traits,Allocator>& 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
    locations because it misleads users. Plauger asked for confirmation that the
    streams are still synchronised. Myers said yes.

    Item 5. Add #include <iosfwd> to <ios> 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

    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().
    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
    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.
    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
    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
    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.

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.
    confirmed there were 32 voting members of X3J16 and 5 WG21 delegations

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
    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

        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

    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
    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
    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

    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 _________________________