Doc No: SC22/WG21/N1459 J16/03-0042 Date: April 25, 2003 Project: JTC1.22.32 Reply to: Robert Klarer IBM Canada, Ltd. klarer@ca.ibm.com

Minutes of J16 Meeting No. 36/WG21 Meeting No. 31, April 7-11, 2003

1. Opening activities

Clamage called the meeting to order at 9:22am on Monday, April 7, 2003

1.1 Opening comments

Clamage reviewed networking arrangements for this meeting. Glassborow discussed attendees' options for lunch.

1.2 Introductions

Clamage had the attendees introduce themselves.

1.3 Membership, voting rights, and procedures for the meeting

Clamage reviewed membership and voting rules. Nelson circulated the attendance list and membership list.

1.4 Agenda review and approval

Clamage presented the agenda (document 03-0003/N1421).

Plauger had a concern that the discussion of export would be held during an evening technical session (agenda item 4.1, "Why We Can't Afford Export"), as the issue is too important to be discussed during an evening session.

Clamage assured Plauger that no votes would be taken during the evening session, and that the session would consist only of technical discussion.

Plauger stressed the importance of this issue, not only from a technical point of view, but from the point of view of process and procedure.

Plum suggested that some committee time during the day be devoted to the discussion of process and procedure.

Clamage observed that time could be allotted from the schedule on Thursday.

Discussion followed concerning the time on Thursday during which this session would be held.

Clamage concluded that this session would be held from 1:30pm to 3:30pm on Thursday.

Evening technical sessions:
Clamage indicated that the evening technical sessions will begin at 7:30pm on Monday and Tuesday.

Motion to approve the agenda as amended:
Mover: Plum
Seconder: Dawes
WG favor oppose abstain
J16 15 0 0

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.

There were no papers or documents.

Adamczyk mentioned that the Core Working Group (CWG) had intended to discuss issues that were of interest to members of other working groups. The various Working Group chairs will meet to agree on arrangements so that interested parties may participate.

Austern reported that the Library Working Group (LWG) would continue its work of processing DRs and discussing proposals for inclusion in the TR.

Goldthwaite reported that the vote to register the Performance TR has been approved.

Stroustrup suggested that the Evolution Working Group (EWG) needed to establish an issues list and to establish an overall direction for the evolution of the language. Stroustrup intended to begin by emphasizing proposals that sought to "remove embarassments" and proposals that will facilitate the construction of libraries.

1.6 Approval of the minutes of the previous meeting

Motion to approve the minutes:
Mover: Charney
Seconder: Glassborow
WG favor oppose abstain
J16 15 0 0

1.7 Report on the WG21 Sunday meeting

Sutter reported that 9 countries were officially represented at this meeting, and that the drafting committee for this meeting was composed of Steve Adamczyk, Matt Austern, and Gabriel Dos Reis.

Sutter also reported that there was discussion in the WG21 meeting about the need for a base document for the C++0x effort. It was proposed that TC1 (document number 14882:2003(E) ) be used for this purpose.

Adamczyk expressed concern about the proposed new working paper. His specific comments were:

Adamczyk asked whether there would be a TC2.

Glassborow suggested that we should agree that there will be no TC2, and that we will begin work on a revised standard.

After some discussion, there was concensus that the base document for the C++0x effort will be equivalent to 14882:2003(E) with all DRs applied. It was agreed that this decision would be moved for formal voting during the Friday session. There was tacit agreement that there will be no TC2 in the form of a revised standard.

Sutter reviewed the schedule for future meetings:

  1. October 26-31 2003, Kona HI, hosted by Plum Hall
  2. Spring 2004, we have received an invitation from Whitesmiths Australia, to convene in Sydney, Australia; the likely dates are March 21-26, 2004
  3. Fall 2004, invitation from Microsoft to host in Redmond

1.8 Liaison reports

WG14 Liaison

Glassborow reported that the WG14 embedded C TR is almost done, and that the mood of the committee is that there is no need to revise the C standard.
Glassborow also reviewed the group's discussion of sequence points.

Plum reported that nine members of WG14 at the meeting were liaisons from C++ to C.
Plum took a count of liaisons from C to C++ among WG21 members at this meeting. Plum counted 8 liaisons.
Plum reviewed the 16-bit and 32-bit character types that were approved for C.

T. Plauger reviewed document N996, the embedded C TR, and document N998, concerning extended character types.

Sutter reported that Martyn Lovell's paper 997 on C library security was presented to WG14.
A similar paper will be presented to WG21 in the Monday night technical session.

1.9 New business requiring actions by the committee

2. Organize subgroups, establish working procedures.

We have four subgroups, Core, Library, Evolution, and Performance.

The committee broke into subgroups at 10:30am.

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

3.1 Technical Session, Standard Library Security, Martyn Lovell, Microsoft.

4. WG sessions continue.

4.1 Technical Session, "Why We Can't Afford Export", N1426, Herb Sutter and Tom Plum

5. WG sessions continue.

6. General session.

Clamage: there will be a formal vote Friday to approve or withdraw the standard. The result of this formal vote will be sent to INCITS.

6.1 WG status and progress reports.

Core Working Group progress:

Adamczyk reported that most of the CWG's time was devoted to DR processing. All items in Ready state except one will be proposed for integration into the Working Paper. One issue requested a relaxation of the rules for the placement of the typename keyword. CWG has decided in principle to permit typename to be used with qualified names in any context, even outside of templates. The requester, P J Plauger has requested that typename be permitted on any name that is a type, including both qualified names and unqualified names.

Plauger reviewed his request for the group.

Crowl claimed that syntactical ambiguities would arise if typename could be applied to unqualified names.

Spicer suggested that these ambiguities already exist.

Austern asked whether this proposal would allow a programmer to disambiguate code in ways that are not possible today. The consensus opinion of the group was that the answer to Austern's question was "no."

Adamczyk reviewed Core Issue 339 concerning the use of an arbitrary expression as an operand to a sizeof expression that is used as a template parameter. Template argument deduction does not currently work in this sort of case in most C++ compilers. To make this work compilers may need to make ABI changes. Adamczyk invited the group to express opinions to him about whether this sort of deduction should work, and -- more specifically -- in which cases it should or should not work.

example:

extern "C" int printf(const char *, ...);
char f(int);
int f(...);
// Approach 1 -- overload resolution in template class
// No problem
template <class T> struct conv_int {
  static const bool value = (sizeof(f(T())) == 1);
};
// Approach 2 -- overload resolution in type deduction
// Difficult
template <int I> struct A {
  static const int value = I;
};
template <class T> bool conv_int2(A<sizeof(f(T()))> p) {
  return p.value == 1;
}
int main() {
  printf("short: %d\n", conv_int<short>::value);
  printf("int *: %d\n", conv_int<int *>::value);
  printf("short: %d\n", conv_int2<short>());
  printf("int *: %d\n", conv_int2<int *>());
}
Evolution Working Group progress:

Stroustrup reported that the EWG will not be bringing forward any formal motions at this meeting.

Some specific proposals that had been discussed by EWG included:

Austern asked whether C committee was approached concerning ideas about changing the preprocessor.
Stroustrup answered: not yet. We need to develop the idea further and to write a paper.

Stroustrup also recalled that Vandevoorde hosted an information session in which he presented his C++ metaprogramming project

Library Working Group progress:

Austern reported that the LWG spent most of the week reviewing proposals to the Library TR, and that many proposals have been accepted in principle by the LWG for inclusion in the TR.

Austern also noted that some LWG issues in Ready Status will be moved for approval as DRs.

Austern reviewed two TR proposals that were controversial among the members of the LWG: N1422/03-0004 "A Proposal to Add Mathematical Special Functions to the C++ Standard Library" and N1443/03-0025 "A Proposal to Add Hash Tables to the Standard Library."

Mathematical Special Functions:

Austern reported that concerns expressed among the LWG about the proposal for mathematical special functions were that these functions are suitable for C, so work on them should be coordinated with the C committee. Also, this library is very large and complicated and the proposal may be controversial for that reason.

Discussion followed concerning the suitability of a special purpose library such as this one for inclusion in the TR.

Some points made during this long discussion:

A straw poll was taken, and expressed opinion among the group was that this proposal should be moved for inclusion in the TR on Friday.

Hash Tables:

Austern reviewed the LWG discussion about the names of the containers proposed in "A Proposal to Add Hash Tables to the Standard Library." Specifically, there had been concern that confusion and incompatibility would result if the names hash_set, hash_multiset, hash_map, and hash_multimap were used, since these names are already commonly used for similar -- but slightly different -- nonstandard containers. A revision of the proposal (document N1456) reflects the outcome of this discussion; the names of the proposed containers have changed from hash_set, hash_multiset, hash_map, and hash_multimap, to unordered_set, unordered_multiset, unordered_map, and unordered_multimap, respectively.

Discussion about these names followed.

Dawes reviewed some of the alternatives that were considered by the LWG:

In a straw poll, it was found that there was strong support for a motion to approve this proposal for inclusion in the TR.

Austern reviewed the LWG discussion of the equality operator for the unordered containers.

Performance Working Group progress:

Goldthwaite reported that editorial work on the Performance TR continued. In particular, a great deal of work was devoted to the integration of changes into the document which originated from the C committee's parallel document. The TR is now very close to completion.

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

6.3 Discussion, "Why We Can't Afford Export."

After much discussion a straw poll was conducted. Members were permitted to vote for more than one of the following alternatives (or none at all):

Alternative Straw Votes
Remove export8
Leave in export28
Discuss more7
No more discussion30

7. WG sessions continue

8. Review of the meeting

8.1 Formal motions, including DRs to be resolved.

General

Move to affirm the existing standard, ISO/IEC 14882:1998(E).
Mover: Caves
Seconder: Plauger
WG favor oppose abstain
J16 19 0 0

Move to adopt ISO/IEC 14882:2003(E) as the working paper.
Mover: Charney
Seconder: Nelson
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to amend the working paper by applying all issues whose status is DR from N1434, "C++ Standard Core Language Defect Reports, Revision 25".
Mover: Adamczyk
Seconder: Sutter
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to amend the working paper by applying all issues whose status is DR from N1441, "C++ Standard Library Closed Issues List Revision 25".
Mover: Austern
Seconder: Charney
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Performance TR

Move to forward the Performance TR document to SC22 for a final vote.
Mover: Goldthwaite
Seconder: Glassborow
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to ask SC22 to make the performance TR available for free, or to authorize WG21 to make it available for free.
Mover: Glassborow
Seconder: Charney
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to direct the project editor of the performance TR to make changes of an editorial scope, such as reconciling it with the WG14 technical report WD TR 18037, fixing typographical errors, and fixing incorrect code examples.
Mover: Glassborow
Seconder: Charney
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Library

Move to advance the following library working group issues to DR status, and apply them to the working paper: 187, 225, 229, 231, 278, 282, 300, 336, 358, 360, 363, 364, 370, 373, 375, 380, 381, 383.
Mover: Austern
Seconder: Dawes
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1452, "A Proposal to Add an Extensible Random Number Facility to the Standard Library", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Glassborow
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1422, "A Proposal to Add Mathematical Special Functions to the C++ Standard Library", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Brown
WG favor oppose abstain
J16 14 4 1
WG21 4 1 4

The convenor ruled that the above result constituted concensus among the commitee to approve the motion. Some discussion ensued concerning the level of discomfort among some members of the committee about this motion.

Move to accept N1424, "A Proposal to add Type Traits to the Standard Library", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Hinnant
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1429, "A Proposal to add Regular Expression to the Standard Library", for inclusion in the library extensions technical report
Mover: Austern
Seconder: Dawes
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1450, "A Proposal to Add General Purpose Smart Pointers to the Library Technical Report", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Charney
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1432, "A Proposal to Add an Enhanced Member Pointer Adaptor to the Library Technical Report", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Dawes
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1453, "A proposal to add a reference wrapper to the standard library", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Abrahams
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1454, "A uniform method for computing function object return types", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Abrahams
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1455, "A Proposal to Add an Enhanced Binder to the Library Technical Report", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Marcus
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Move to accept N1456, "A Proposal to Add Hash Tables to the Standard Library (revision 4)", for inclusion in the library extensions technical report.
Mover: Austern
Seconder: Dawes
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Glassborow reported that he was uncomfortable with the names of the containers specified in this proposal, but that he felt that it made sense to try the name in a TR.

Hinnant reported that all of the names will likely be declared in a namespace named tr1 that is nested inside the nested namespace std.

Core

Move to advance the following core working group issues to DR status, and apply them to the working paper: 184, 198, 204, 226, 228, 245, 254, 258, 262, 263, 274, 283, 298, 318, 322, 323, 335, 336, 337, 345, 353, 377.
Mover: Adamczyk
Seconder: Nelson
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

There was agreement that issues that had been incorporated into the Working Paper would be assigned the status code WP.

Nelson moved to thank the host.
Applause.

Dawes moved to thank Maurer and those others who maintained web servers throughout the meeting.
Applause.

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

8.3 Issues delayed until Friday

9. Plans for the future

Glassborow apologized for the poor quality of the internet access that was available at the meeting, and invited committee members to write the hotel management to explain that their expectations were not met.

Glassborow suggested that guidelines be written for hosts of future meetings to simplify their work and to allow them to benefit from the experience of previous hosts.

Glassborow suggested that companies that were not willing to host meetings themselves take it upon themselves to help others to finance the cost of future meetings.

9.1 Next meeting

Plum reminded the committee that trip information for the Fall 2003 meeting in Kona HI had been posted to the -all reflector.

9.2 Mailings

Nelson reported that the deadline for the post-meeting mailing will be April 25 and that the deadline for the pre-Kona meeting mailing will be September 19.

9.3 Following meetings

covered on Monday.

Plauger requested that an agenda item be created to deal with the issue concerning DLLs.
There was concensus that this could be worked out in private e-mail.

Motion to adjourn
Mover: Plauger
Seconder: Dawes
WG favor oppose abstain
J16 19 0 0
WG21 9 0 0

Meeting adjourned at 9:15.

Attendance

Company/Organization National Body Representative Mon Tue Wed Thu Fri
Adobe Systems Mat Marcus V V V V V
Apple Computer US Matthew Austern V V V V V
AT&T Andrew Koenig
AT&T US Bjarne Stroustrup V V V V V
Atlantic International David Miller V V V V V
Borland International John Wiegley
Charney & Day Reg Charney V V V V V
Dinkumware P. J. Plauger V V V V V
Dinkumware Pete Becker A A A A A
Dinkumware US Tana Plauger A A A A A
Edison Design Group US J. Stephen Adamczyk V V V V V
Edison Design Group Daveed Vandevoorde A A A A A
Edison Design Group John H. Spicer A A A A
Fermi Nat. Accelerator Lab US Walter E. Brown V V V V V
Fermi Nat. Accelerator Lab US Marc F. Paterno A A A A A
Gimpel Software James Gimpel A A A
Hewlett-Packard Kerch Holt
Hewlett-Packard Vikram Kumar
IBM CA Robert Klarer V V V V V
IBM CA Sandor Mathe A A A A A
Indiana University Jeremy Siek V V V V V
Indiana University Jaako Järvi A A A A A
Intel US Clark Nelson V V V V V
Intel Gyuszy Sütö
Intel Judy Ward
Mathworks William M. Miller A A A A A
Mentor Graphics Yenjo Han
Metrowerks Howard E. Hinnant V V V V V
Metrowerks Andreas Hommel A A A A A
Microsoft Jonathan Caves V V V V V
Microsoft CA Herb Sutter A A A A A
Microsoft Bobby Schmidt
Microsoft Brandon Bray A A A A A
None - (Abrahams) David Abrahams V V V V V
None - (Dawes) Beman G. Dawes V V V V V
None - (Dawes) US William A. Seymour
Oracle US Gregory Colvin V V V V V
Perennial Barry Hedquist
Plum Hall US Thomas Plum V V V V V
Programming Research Richard Corden V V V V
Rational Software Tom Wilcox
Red Hat Jason Merrill V V V V V
Red Hat Benjamin Kosnik
Rogue Wave Software Martin Sebor
Silicon Graphics John Wilkinson
Sun Microsystems Lawrence Crowl V V V V V
Sun Microsystems US Stephen D. Clamage A A A A A
Tellabs Operations Daniel Miller
Utah Valley State College Chuck Allison
ACCU UK Francis W. Glassborow N N N N N
Amazon.com Gary Powell N N N N
CodeSourcery Nathan Sidwell N N N N
Crystal Clear Software Jeff Garland
DB Systems Jens Maurer N N N N N
ILOG FR Georges Schumacher N N N N N
INRIA FR Gabriel Dos Reis N N N N N
Logica CMG NL Michiel Salters N N N N N
Phaidros Software Dietmar Kühl N N N N N
Ramtex International DK Jan Kristoffersen N N
RAP NO Keld Simonsen
RPI Doug Gregor N N N N
Tokyo University of Technology JP Ichiro Koshida N N N N N
Toshiba JP Seiji Hayashida N N N N N
Univ. of Coop Education DE Richard Kaiser N N N N
University of Hanover Thomas Witt N N N N
Vollmann Engineering CH Detlef Vollmann N N N N N
UK James Dennett
UK Kevlin Henney N N N N
UK Lois Goldthwaite N N N N N
Alisdair Meredith N N
Christopher Hill N N N N N
Daniel Gutson N N N N
Thorsten Ottosen N
Microlise UK Alan Griffiths N N N
Deran Instruments UK Anthony Williams N
twoNine Computer Service UK Mark Radford N N N