SC22/WG21/N1212

J16/99-0036

November 9, 1999

Sean A Corfield

sean.corfield@ocsltd.com

J16 Meeting No. 29

WG21 Meeting No. 24

October 19-26, 1999

J16 RECORD OF DISCUSSION

Aston Keauhou Beach Resort Hotel

Keauhou-Kona, HI

 

J16 Meeting, 20-26 October, 1999.

1. Opening activities

Clamage opened the meeting at 08:48HST on Wednesday, 20 October, 1999.

1.1 Opening comments

Clamage welcomed everyone to Hawaii.

1.2 Introductions

Miller circulated the J16 attendance list for completion - attached as Appendix A - and the membership list for review and correction.

The committee introduced themselves.

1.3 Membership, voting rights, and procedures for the meeting

Clamage explained voting rights - he said people should check in with Miller about membership. Clamage said Plum would talk about procedures and facilities (which he did).

1.4 Agenda review and approval

Clamage added two new items (1.9.1 and 1.9.2).

Motion by Sutter / O'Riordan

Move we adopt N1205 = 99-0029 as the agenda.

Motion passed J16: lots in favor, none opposed, none abstain.

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

The issues lists have been published on the web - contact the relevant WG chair for more detail. Dawes reported that LWG will work on their issues list. Miller reported that CWG will work on their issues list, starting with "Ready" items. Kehoe reported that PWG will continue to flesh out their draft and focus on issues such as programmer-directed optimizations.

1.6 Approval of the minutes of the previous meeting

Motion by Corfield / Kühl:

Move we approve N1194 = 99-0017 as the minutes of the previous meeting.

Motion passed J16: lots in favor, none opposed, none abstain.

1.7 Report on the WG21 Tuesday meeting

Plum summarised the WG21 discussions. He said the main decision was to vote out the TC at the end of the Toronto meeting in October 2000. Clamage noted that we need to be careful that any TC2 resolutions (should TC2 happen) do not contradict any resolutions in TC1.

1.8 Liaison reports

WG14 liaison was deferred as Benito is currently in the WG14 co-located meeting.

Sutter has been asked to liase between the H2 SQL and J16 committees. He said the SQL-99 FDIS is currently in ballot.

No other liaisons were present.

1.9 New business requiring actions by the committee

1.9.1 Approve WG21 convenor

Plum was the only volunteer for convenor. His appointment was approved by SC22 pending J16 approval.

J16 endorse Plum's appointment: lots in favor, none opposed, none abstain.

1.9.2 Resignation of secretary

Clamage explained that Corfield had announced his intent to step down as secretary and possibly withdraw from J16 work. The committee thanked Corfield for his work as secretary. Clamage asked for volunteers to contact him during the meeting.

1.9.3 Other new business

Kehoe asked whether a revised standard would be kept up to date (effectively as a Working Draft) with the result of Defect Resolutions. Koenig said he would attempt to produce such a document inline with production of TC1.

2. Organize subgroups, establish working procedures

Clamage recessed J16 at 09:22HST on Wednesday, 20 October, 1999.

3. WG sessions (Core, Library, Performance, possibly others)

4. WG sessions continue

5. WG sessions continue

6. General session

Clamage reconvened the committee at 08:30HST, Monday, 25 October, 1999.

6.1 WG status and progress reports

This was combined with the presentation of DRs below.

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

Core WG

Miller presented the list of DRs that will be brought for a vote, summarized in document D1217 = 99-0041.

He said CWG started this meeting with 173 issues on the list of which:

In order to triage the open issues, CWG used the following four categories:

The goal was to close or assign for drafting all category 0 issues, and attempt to reach consensus on category 1 issues. The result of the triage was:

There were 6 new issues so there are now 104 active: 11 are being put forward as DRs, 1 is being reviewed, 63 have been assigned for drafting, and 40 are open. There are 75 closed issues (of which 32 have produced DRs).

Miller said 21 Defect Reports are being recommended at Kona. He noted that issues 74 and 20 (previously marked "Ready") have minor wording changes. He noted that 2 (out of 3) issues that were under review are now recommended as DRs, and 8 previously open issues are being recommended as DR status.

Miller presented the following open issues for discussion by the committee:

Issue 136

Consider:

void f(int, int, int=0);

class X {

friend void f(int, int=0, int); // legal?

};

void f(int=0, int, int);

The Standard says that declarations in different scopes have distinct default arguments. Does it mean "lexical scope", in which case the above is illegal, or "semantic scope", in which case the above is legal.

Spicer said this comes about because friend no longer injects names.

Miller said the following possible resolutions were considered by the WG:

  1. if a friend declaration declares a default argument, allow no other declarations of that function in the translation unit,
  2. as for 1 but only allow the friend declaration if it is also a definition,
  3. disallow default arguments in friend declarations.
  4. treat the default arguments in each friend declaration as a distinct set, therefore it would be an error if the call would be ambiguous.

CWG dropped 1 and 4 as options but were split fairly evenly for 2 and 3. Miler answered questions about the rationale for not allowing the example to be legal. The main problem shows up with templates - there is no logical ordering for the addition of default arguments. Spicer explained the problems with option 4: name lookup finds friends differently to free name lookup. Stroustrup said our general principle is to ensure friends in templates should not interfere with existing code. O'Riordan said that both options 1 and 2 affect surrounding code - they prevent other default arguments in declarations. Clamage asked what problems option 3 causes. Abrahams said it breaks the "Barton & Nackman" trick if you wanted to add default arguments. Clamage said you could use overloaded functions to achieve the same result. Myers asked why option 3 had opposition. Adamczyk said there was existing code (declaring default arguments in friend declarations) and at this point in the process we should not break existing code. Stroustrup asked what the CWG thought about existing practise. Spicer explained the idiom that uses a friend definition (with default arguments) inside a template class. Clamage asked if overloading would solve this. Spicer said yes but it would force users to rewrite existing code. Koenig asked that someone write up the options with examples to show what currently working code would break under each option.

Miller called a three way vote on all four options (favor/live with/OMDB):

1. 0 favor this option, 14 could live with it, 5 "over my dead body",

2. 8 favor, 13 could live with, 5 OMDB,

3. 11 favor, 7 could live with, 14 OMDB,

4. 7 favor, 10 could live with, 9 OMDB.

Miller will take this back to CWG for more work.

Issue 138

void foo();

namespace N {

using ::foo;

struct S {

friend void foo();

};

}

Is the friend foo the global foo? Is it a distinct member of N (and hence a conflict)? This hinges on the definition of "first declared in a friend declaration".

Miller explained the background to friend lookup: functions and classes are treated differently - friend function lookup does not find members, friend class lookup does. The lookup is not a standard name lookup. Miller gave some examples that surprised some people. Miller will write a paper for the next mailing with a view to describing the actual name lookup process for friend names.

Issue 178

Miller said that problems were discovered with the definition of "value initialization". 8.5p7 still says "default initialized" - Koenig found other similar wording problems. There are convincing arguments for changing base and mem-initializer to value initialization instead of default initialization.

There are three contexts were this matters:

The plan is to bring a resolution in Tokyo that makes all three value-initializations. Koenig noted that the change to new-initializer cannot break code because new T() is currently unspecified (and would therefore become defined).

Other issues

Josuttis asked about resolving the "& &" issue (where the type reference-to-reference-to-T is generated during template instantiation). Stroustrup said it was discussed in Dublin and no counter arguments were found. Stroustrup will draft the issue resolution for Tokyo.

Sutter asked about exception-specifications and the type system. Miller said this is a category 2 issue - open with no further work since Santa Cruz. Sutter expressed concern that moving exception specifications further into the type system would cause work for the LWG. Abrahams expressed the same concern more strongly. Stroustrup also spoke out against them becoming more part of the type system. Miller said as a category 2 issue with no work being done on it, the issue would not come up for a vote during the TC process and so become controversial.

Miller called a straw vote on D1217 = 99-0041:

J16: 22 in favor, none opposed, none abstain.

WG21: 6 in favor, none opposed, 1 abstain.

Library WG

Dawes summarised the Library WG progress. He said there were 50 new issues, mostly from Kühl (laughter). Dawes said issues marked "Ready" from 99-0030 = N1206 will be brought forward except for issues 31, 42 and 53 which need more work. Dawes mentioned that the issue concerning array elements being contiguous is proposed to be resolved along the lines of the valarray<> wording.

Dawes said that LWG is nowhere near consensus on what to do about vector<bool>. He said it is broken in several ways (it doesn't conform to container requirements, it isn't well-specified). He said that since we already have a Standard, we probably can't just rip it out so we are still discussing it.

Abrahams said it interferes with writing generic code (because it isn't like other vectors) and it forces an optimisation onto users that they may not want. Sutter said it raises a wider issue of how to change the library in the future, in particular how should we use namespaces to version the library etc? Stroustrup spoke strongly against removing anything that is already in the Standard. Josuttis said this issue was more complex than simply removing a feature that was currently in use. The various options discussed in the Library WG were raised and discussed again. Koenig summarised the problem: we have two contradictory guarantees in the Standard and therefore cannot implement the library as specified. We can change one (or both) of the guarantees, or we can admit we made a mistake and despite it being unimplementable, require implementors to solve the problem anyway. Stroustrup spoke out very strongly against removing any feature currently specified in the library.

Dawes will have copies of the issues being moved forward available early in the afternoon.

Performance WG

Kehoe reported on what PWG have been doing for the TR. The various sections are gradually getting more content. Much of the work focused on the "Guide for implementors" and it may be renamed to "Implementation techniques". The PWG also intend to come up with some tests to obtain figures on the efficiency of various language and library features. PWG will make various sets of tests available on their web page - Kehoe will post a note on the -all reflector. There was some discussion about the preliminary results so far. There was some concern about publicising 'benchmarks' of certain compilers. Becker said benchmarks need to be handled very carefully to ensure the results are meaningful. Plum said the rules covering distribution of information differ between ISO and J16. ISO process encourages people to join their national panel, paying fees if appropriate, to get access to that information. By contrast NCITS and ANSI want the process to be public and be seen to be public. Plum cautioned that we should not be seen to be dealing with benchmarks - we are conducting experiments. However, we have no control over what the media may make of our actions. We will be better served by conducting a greater volume of experiments and being as public with the results as we can. Austern cautioned that we need to carefully consider tradeoffs involved in implementation techniques. Abrahams said they had not intended to compare compilers, merely to show that using exceptions was viable for embedded systems, i.e., that executable size could be less for exception code versus code written using 'standard' error handling techniques.

Miller suggested that further detailed discussion be taken back to the WG and on the -perf reflector. Stroustrup said it was very important to gather this detailed data and the committee needed to think about how to do this. The discussion about what to do with the data from the experiments continued for a while.

The committee broke into working groups at 10:45HST on Monday, 25 October, 1999.

7. WG sessions continue

8. Review of the meeting

The committee reconvened at 08:17HST on Tuesday, 26 October, 1999.

Clamage noted that the majority of work at this meeting was to continue working on Defect Reports and their resolutions.

8.1 Formal motions, including DRs to be resolved

Motion by Nelson / Adamczyk:

Move that we submit to the Project Editor as Potential Defect Reports all those issues in 99-0041 = N1217 "Core WG Defect Resolutions".

Motion passed J16: 22 in favor, none opposed, none abstain.

Motion passed WG21: 7 in favor, none opposed, none abstain.

Motion by Dawes/Sutter:

Move that we submit to the Project Editor as Potential Defect Reports those issues listed in N1220 = 99-0030.

Dawes explained that this list is essentially those issues from N1206 = 99-0030 that are marked "Ready" with five issues removed (for further work by LWG).

Motion passed J16: 21 in favor, none opposed, none abstain.

Motion passed WG21: 7 in favor, none opposed, none abstain.

Dawes noted that two issues approved in Dublin will be changed and presented for a vote again in Tokyo. These are issue 4 (which has now been designated NAD) and issue 38 (which will have some words removed from the proposed resolution).

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

Koenig noted that the committee now has an action to forward to him, as Project Editor, an exact and complete list of just those issues that we have approved as Potential Defect Reports. Plauger emphasised the importance of producing a single, unambiguous document at the end of each meeting stating exactly what action the committee took. Corfield clarified that in Dublin we voted to accept a document from Core WG containing issues (with wording) and a directive from Library WG naming the issues list and their status. Koenig would like Dawes to provide an explicit list of those issues in a separate machine readable document.

8.3 Issues delayed until Tuesday

Sutter reported on the H2 SQL committee. He said there is no C++ binding yet and members of the committee have expressed interest in helping with defining the binding. Sutter asked for a show of support for working to create the binding: about four or five hands were raised. Clamage said Sutter should offer J16's help to H2.

Clamage announced that Sutter had volunteered to act as secretary. Applause.

Informal motion to thank the host, Tom Plum: Applause.

9. Plans for the future

There was discussion about future meetings (detailed below).

9.1 Next meeting

Plum said that the next meeting would be in Tokyo in April 2000. The dates were confirmed as 16-21 April. This is adjacent to (but not overlapping) the WG14 meeting the previous week. There is currently no J16 sponsor for this meeting - Nelson to check on the process required for this.

9.2 Mailings

Miller said the post-Kona mailing deadline is November 9th, and the pre-Tokyo mailing deadline will be March 7th 2000.

9.3 Following meetings

The October 2000 meeting will be in Toronto sponsored by PeerDirect, IBM and Xerox. The dates will be announced soon. Sutter volunteered to be the primary contact for organizational aspects of this meeting. Klarer and Sutter will announce the dates as soon as they can. The third or fourth weeks of October seem better choices (to avoid public holidays). WG14 are also attempting to meet around that time, back to back with the WG21 meeting.

The Spring 2001 meeting will be in Copenhagen, again back to back with the WG14 meeting.

For the Fall 2001 meeting, we would prefer a West Coast location, again liasing with WG14 to semi-colocate. For this meeting we may consider overlapping 2 days (Thursday/Friday, as we have in Kona). Caves said he would ask Microsoft if they would host a Seattle meeting.

9.4 Any other business

Plum summarised the discussions from the WG21 meeting regarding the format of the TC. He said the TC would be a list of changes made in respect of the current Standard. There was also some feeling that we could produce a 'red-lined' revision of the Standard. Sutter wanted to know what J16's opinions were of this. Spicer asked whether we will maintain a Working Draft containing up to date voted in PDRs. Koenig said he would attempt this but his automated tools are not ideal. He has some ideas about how to make such a document as self-explanatory as possible. There was further discussion about the exact formats allowed and disallowed.

Miller asked Koenig about editorial changes. Koenig said he would like to identify such changes in the same way as DR changes and annotate them as 'typos'. There was further discussion about the exact format of the DRs and the ongoing Working Draft. Corfield cautioned that DR wording should always be relative to the current published Standard. Charney said source code control of the troff source would provide help in several areas. Miller clarified his suggestion to maintain an unofficial annotated PDF version of the Standard - he was not suggesting Koenig undertake the work and he appreciates that it wouldn't necessarily stay in exact synchronization (with the official Working Draft). Sutter commented on Corfield's and Spicer's issues of how to write the DRs regarding both the published Standard and an internal WD, namely to include both versions of the current text (if different) and the proposed text. It was suggested that further discussion be conducted on the -edit reflector.

Plauger clarified that the TC needs to document changes but not necessarily related to DRs. The Record of Response must list the DRs so we do not need to tie the changes to actual DRs. O'Riordan concurred.

Motion by Charney/Sutter:

Move we adjourn.

Motion passed WG21+J16: lots in favor, none opposed, none abstain.

Clamage adjourned 09:26HST on Tuesday, 26 October, 1999.

Appendix A - Attendance List

Name

Organization

W

Th

F

M

T

Koenig, Andrew

AT&T

V

V

V

V

V

Stroustrup, Bjarne

AT&T

A

A

A

A

 

Nilsson, Jarl

C Level Design Inc

A

A

A

A

 

Charney, Reg

Charney & Day

V

V

V

V

V

Phillimore, Coleen

Compaq Computer Corp

A

A

A

A

A

Ward, Judy

Compaq Computer Corp

V

V

V

V

V

Kehoe, Brendan

Cygnus Solutions

V

V

V

V

 

Merrill, Jason

Cygnus Solutions

A

A

A

A

V

Becker, Pete

Dinkumware Ltd

A

A

A

A

A

Plauger, P.J.

Dinkumware Ltd

V

V

V

V

V

Plauger, Tana

Dinkumware Ltd

A

A

A

A

A

Adamczyk, Steve

Edison Design Group

V

V

V

V

V

Spicer, John

Edison Design Group

A

A

A

A

A

Vandevoorde, Daveed

Edison Design Group

A

A

A

A

A

Jonsson, Fredrik

Ericsson Inc

V

V

V

V

V

Klarer, Robert

IBM

A

A

A

A

A

Schmeiser, Jamie

IBM

V

V

V

V

V

Wiegley, John

Inprise Corp (aka Borland)

V

V

V

V

V

Nelson, Clark

Intel Corp

V

V

V

V

V

Andersson, Per

Ipso Object Software

V

V

V

V

V

Munch, Max

Lex Hack & Associates

A

A

A

A

A

Han, Yenjo

Mentor Graphics Corp

V

V

V

V

V

Caves, Jonathan

Microsoft

A

A

A

A

A

Laeremans, Ronald

Microsoft

A

A

A

A

 

Corfield, Sean

Object Consultancy Services

V

V

V

V

V

Sutter, Herb

PeerDirect Inc

V

V

 

V

V

Benito, John

Perennial Inc

V

V

V

V

V

Plum, Tom

Plum Hall

V

V

V

V

V

Spencer, Michael

Programming Research

V

V

V

V

V

Wilcox, Thomas

Rational Software Corp

V

V

V

V

V

Sebor, Martin

Rogue Wave Software

V

V

V

V

V

Dawes, Beman

Self

V

V

V

V

V

Miller, William M

Self

A

A

A

A

A

Austern, Matt

SGI

V

V

V

V

V

Clamage, Steve

Sun Microsystems

A

A

A

A

V

Crowl, Lawrence

Sun Microsystems

V

V

V

V

 

Crowfoot, Norm

Xerox Corp

V

V

V

V

V

Myers, Nathan

Zembu Labs

A

A

A

A

A