ISO/ IEC JTC1/SC22/WG14 N862

                     REVISED/FINAL Version
		     Document: SC22/WG14/N862

Minutes of Colocated ISO/IEC JTC1/SC22/WG14 and NCITS J11 Meetings
1998-06-22 to 1998-06-26
Copenhagen, Denmark

Monday, 1998-06-22

1.  Opening activities
1.1.  Opening comments
1.2.  List of participants introduced:
	John Benito, Perennial		WG14, Convener
	Frank Farance, Farance Inc.	J11
	Erin Harris, IBM		J11; WG14, Canada
	Mark Hoerth, HP			J11
	Rex Jaeschke, Self		J11, Chair
	Larry Jones, SDRC		J11, Project Editor
	David Keaton, Self		J11, Meeting Secretary
	Jan Kristoffersen, Ramtex	WG14, Denmark
	Antoine Leca, Self		WG14, France
	Tom MacDonald, SGI		J11
	Neil Martin, Plum Hall UK	WG14, UK
	John Parks, DEC			J11
	Thomas Plum, Plum Hall		J11
	Bill Seymour, Self		J11, Rationale Editor
	Keld Simonsen, DKUUG		WG14, Denmark
	Keishiro Tanaka, Fujitsu	WG14, Japan
	Jim Thomas, HP			J11 alternate
	Douglas Walls, Sun		J11

1.3.  Jaeschke was unanimously selected as chair.

1.4.  Dansk Standard is hosting this meeting.

1.5.  Usual procedures to be used.

1.6.  Approval of previous minutes.
	Item 1.7 second entry #23
	Change WG14 to WG15.

1.7.  Action items.
*open	Gwyn & Benito to notify WG15 about changes to assert.
*open	Gwyn & Seebach to make sure printf & scanf are done right.
*closed	Tydeman, Gwyn, Thomas, LIA-1 review.
*open	Benito to investigate avail. of stds. in electronic form.
*closed	Benito contacted Ann Wallace.
*closed	Meyers to draft response to PC-0002.
*closed	Peterson to look at issue of UCNs in external identifiers.
*closed	Seebach to send e-mail to MacDonald listing proposed FP requirement.
*closed	Gwyn to produce inttypes.h wording.
*closed	Benito to respond to DR63.
*closed	T/P/T/M/W to review paragraph.
*closed	Gwyn to discuss with outside sources.
*closed	Meyers to complete his work on the UCN model.
*closed	Jaeschke to e-mail Japanese representatives.
*closed	Meyers to generate rationale wording from PC-0002.
*closed	Meyers to generate rationale wording for intg conversion rules.
*closed	Jones to incorporate ISO directive.
*closed	Thomas, MacDonald to look at prior art.
*closed	Keaton to draft stdbool.h.
*closed	Benito to check draft.
*open	Jaeschke to respond to Tribble.
*open	Harris to get rationale from Mooney.
*closed	Meyers to submit paper to fix arrays as lvalues.
*closed	Jones to provide rationale.
*open	Feather to provide rationale for struct hack.
*closed	MacDonald to provide rationale for restrict.
*closed	MacDonald to provide rationale for inline.
*closed	MacDonald to provide rationale for VLAs.
*open	Feather to provide rationale for mixed decls & code.
*open	Feather to produce rationale wording for vararg macros.
*open	Meyers to produce rationale for macro replacement & pragmas.
*open	Thomase tgmath.h rationale.
*open	Feather to provide va_copy rationale.
*open	Gwyn to discuss horrible random number generator.
*A	Bill Seymour to take this on.
*open	Walls to draft _exit() rationale.
*open	Seebach to provide rationale for no strsep().
*open	Feather rationale for struct tmx.
*open	Jones to provide rationale fro strftime().
*closed	Keaton make something happen wrt. mixed decls & VLAs.
*closed	Jaeschke to foward to SC22.
*closed	Typdeman to generate discussion paper.
*closed	Meyers to draft words for %m and others.
*?	Meyers to write rationale for %m.

1.8.  Approval of agenda.
New items to cover:
N836 Peterson, no extended characters in external identifiers.
N815 Keaton, bool.

1.9.  Distribution of new documents.

1.10.  Information on next meeting.
1998-10, SGI & Plum-Hall, Silicon Valley, document to describe.
Proximity to C++ mtg was a factor.
Scheduled to happen again, 1999-10 in Hawaii.
Summer, 1999 mtg. possibly in UK.
No current hosts for 2000.

1.11.  Identification of national bodies/J11 voting members.
CA, DK, JP, US today; FR, UK expected tomorrow.
11 J11 voting members present out of 17.

2.  Project and rationale editors' reports.
Editor's comments:
Applied N808;  should be backed out & changed to N829.
Duplicate function specifiers:  what happens?
Need discussion of for statement with compound literals.
Significant wording changes no previously reported: return type of main is int. limits.h comments listing powers of two.
6.4 lexical elements place-marker preprocessing tokens.
6.7.8 initialization examples. for statement introduces a new scope (requires discussion).
7.1.1 listed subclause titles instead of functions.
7.5.3 picked up wording from a DR response.

Rationale editor's comments:
Reorganized the document to match the draft.
Incorporated changes from Colorado meeting.
Almost finished with clause 6.
Seymour & Farance will work on making a Postscript copy available.
Rationale should be ready as far as possible in the August/September
time frame to make the C9X schedule.
*A  Jaeschke will coordinate a review process for the rationale.

Public review period is expected to begin in September.  Much of
a slip would make C9X become C2k.
February mtg expected to be ballot resolution & FDIS.

3.  CD Ballot status & resolution.
Ballot results N821:
5 P-members voted approval with no comments (CZ, FI, NL, NO, US).
(US voted yes with understanding that forthcoming comments would be addressed.)
1 P-member approved with comment (CA).
4 P-members voted no (DK, FR, JP, UK).
2 P-members abstained (AU, DE).
10 P-members not voting.
At FDIS level, abstentions don't count.  75% of P-members should approve
and 66% of O-members should approve.

Plan to formally answer all of N821 during this meeting.
Existing comments from US public will be addressed as well.

4.  Identify & prioritize work;  assign issues to subgroups.
Leaders & groups:
Plum, UCNs.
Thomas, FP.
Benito/Jaeschke, US position.
Hoerth, miscellaneous.

5.  Status/subgroups.
Subgroup status; subgroups to supply changes for the minutes:
MacDonald, FP.
Hoerth, misc.
Plum, UCNs.
	Much debate.
Ja1eschke, US comments from N834.
*A  Simonsen will draft a response to US comment 5.

-- 1998-06-23

Bool, N815:
This is the combination of Farance's bool proposal, N738, and
Keaton's bit-field proposal, N743.
Two important aspects of this proposal are the hiding of the type
in a header file and the signedness aspect of the type (unsigned
vs. no signedness).
Debate over the header file approach dealt with the widely held
opinion that introducing basic types through header files is "ugly"
vs. the widely held opinion that too much user code would be broken
Keaton suggested the compromise of adopting the header file approach
but deprecating alternate uses of future keywords bool, true, and false.
Those present did not express support for this [but did later].
Keaton brought up the signedness issue because Feather (not present)
had expressed misgivings about it in the past.  No objections were
expressed by those present.  Keaton indicated that the purpose of
the proposed approach was to touch the minimum necessary parts of
the standard and to ensure that 1-bit bool bit-fields work.
Keaton mentioned that Feather had also had misgivings about the
use of 0 and 1 as the underlying values of the macros false and
true respectively.  No objections were expressed by those present.
Much debate ensued over header files vs. first-class types.
Who can support <stdbool.h>?
*SV J11 10/0
*SV WG14 4/1 (dissent was JP and was personal opinion, not national posn.)
Bill Seymour pointed out that this paper addresses both of the UK comments
concerning bool.
The issue is tabled until tomorrow to give people time to review it.

Danish Posix comments, N821:
Accept all up to the table table:
Norway, p_sep_by_space --> 1; n_sep_by_space --> 1
whole row int_p_sep_by_space --> 1
whole row int_n_sep_by_space --> 1
Defer the localeconv [pn]_sep_by_space English text.
The committee had previously voted against adding the 8 new formats.
No objections were raised this time.
There was debate regarding the E&O specifiers since they require
underlying structure members that some vendors do not have.
Support E&O specifiers?
*SV J11 8/2/1
*SV WG14 5/1/0

Subgroup reports:
FP:  no issues to bring to cmte.
misc:  same
UCNs:  same
comment 32:  no action supported
comment 40:  answer is yes
comment 41:
Strike the unadorned sentence?
*SV 10/2
No national body objections.
comment 44:
Compound Literals example 8 p. 66.
Tabled until for loop debate.
comment 58:  no action supported

Divide into subgroups.

Reconvene;  subgroup status:
General comment 3, semantics of restrict.
MacDonald stated that the proposed change was in the original restrict
wording but was rejected by the committee since it added new meaning
to the const qualifier.  Even changing const semantics would only go
part of the way;  fully addressing this issue requires serious
GC4, remove long long.
General support for explaining the reasons for long long.  No support
expressed for removing it.
Laundry list PC-UK0003 (#3):  Tabled.
#5:  Add clarifying words other than those proposed.
#7:  Tabled.
#10:  Change accepted.
#11:  Change accepted.
#13:  Change accepted.
#14:  Change not supported.
#15:  Change not supported.
#17:  Tabled.
#31:  Change not supported.
#37:  Idea of change accepted.
#40:  Change not supported.
#61:  Fix by using _Bool.
#62:  Change accepted.
#71:  Change not supported.
#73:  Idea of change accepted.
#84:  UCN subgroup answered:  31 bytes.
#86:  Change accepted.
#88:  Tabled;  to be first tomorrow.

Organization for tomorrow:
Subgroups first thing in the morning.

-- 1998-06-24

Subgroups met.

Subgroup reports:
New model presented (need doc from Plum):
*SV 14/0
*SV WG14 6/0
US:  minor issues presented;  mostly finished
FP:  proposed rewording for DECIMAL_DIG

Inlining, MacDonald:
N824:  no objections
multiple occurrences of inline:
Who believes we should leave it undefined?  0
Who believes it should be a constraint?  0
Who believes it should behave like one?  lots

Undefined Behavior, MacDonald N825:
*SV No objection to striking clause 4, paragraph 4.

Bool, Keaton:
1.  Explicitly allow #undef.
2.  Deprecate non-<stdbool.h> use of bool, true, false.
Who can live with proposal as-is plus (1) & (2)?  11
Who can live with this proposal but with typedef/enum underneath in
the implementor's name space?  13
Who cannot live with either one?  1


-- 1998-06-25
Liaison Activities:
.1 J11+ANSI (C)
No new information.  Circulated that ANSI moving toward electronic
distribution & sale of docs.
.2 WG14+ISO/SC22 (C)
Plenary mtg in Aug. in Copenhagen (actually Helsingor).  Circulate
report when Benito returns.
.3 J16/WG21 (C++)
Plum believes that there is a concern that WG21 is charged with
tracking C9X and SC22 should not prevent divergence of C++ and C
languages.  WG21 asking SC22 secretariat to not require that the
languages track each other.  WG14 will ask for the same thing.  WG14's 
charter does not include tracking.
C++ FDIS closed June 23rd and, so far, no negative comments.
.4 WG15 (Posix)
Posix has no convener presently.
Trying to work with Open Group and want to have colocated mtgs.
.5 WG20 (I18N)
Completed 2 TRs.  Completed 2 FCD ballots;  one specified a C
I18N API is in progress and there is a C binding.  Input requested
from WG14.  There will be a C++ binding too.
.6 WG11
Language independent specifications draft ballot.
Ballot ending next week.

Rvalue arrays, Parks, N835 (Randy Meyers), formerly N813:
Some arrays are useless, e.g. f().a[0] .
When a function returns an array, that array is not converted to a
pointer.  This proposal allows these arrays to be accessed.
Wording improvements:
Change "If an attempt is made to modify the result of a function call, 
the behavior is undefined" to "Modifying the result of a function call 
results in undefined behavior."
Issue:  Can you take the address of it?  pointer = &(f().a[0])
Issue tabled until we explore C++ compatibility.

printf/scanf modifiers for inttypes abstract types, Parks, N833 (Meyers)
Several integer types are present in <inttypes.h> but one cannot print 
them out in a portable way.  Some recommendations are made:
(1) adding some additional modifiers 10/0
(2) in favor of only intmax types 0/lots
(3) no interest
(4) yes
There is committee interest in adding %n capability for intmax_t,
size_t, and ptrdiff_t.  The proposal will be amended.
*SV N833 is unanimously accepted without opposition as amended.

Formal model of sequence points, N822:
Committee agreed to add N822 as an informative annex.

DR63 & DR56 Floating-point accuracy, N829 (Tydeman), rewrite of N808:
These words also address PC-UK0065.
*A  Benito will update DR log.
*SV Unanimously accepted by the committee as written.

Part 1:
Change as recommended.
1st sentence is replaced with words recommended by Gwyn, and add the
sentence "When an lvalue expression is evaluated, it shall designate
an object."
Part 2:
Committee directed the editor make editorial changes along the lines

Splitting Annex G, N820 (Feather), PC-UK0069:
Proposal recommends splitting Annex G into two parts, the IEEE
arithmetic part and the imaginary part.  Both would be normative.
Committee unanimously reaffirmed that Annex G should remain
Issue with splitting:
Once the I macro has imaginary type it is easy to create complex
values with an imaginary part having infinity value.  Without the
imaginary type a CMPLX macro to create these values is needed.  This
is believed to be a technical problem.
Committee unanimously agreed that Annex G should not be split into two 

N835 revisited (formerly N813):
C++ allows f().a[0] but has the concept of "rvalue" which is not
modifiable.  The lifetime of temporary objects in C++ lasts until the
next sequence point.  N813 appears to be compatible with this.
*SV Committee unanimously accepted N835 as modified.

VLAs & mixed code/decls, MacDonald, N821/N814/PC-UK0077:
This proposal attempts to correct problems when mixing code and
declarations with VLAs.  It's now possible to jump past a VLA
declaration and still remain within the same block.  This affects
storage duration, switch, goto, and longjmp.
*SV No objections to adopting PC-UK0077 with corrections to example 2.

Danish comments, IOHW:
Country positions remained unchanged.  Denmark wants IOHW in C9X and
no other countries do.  Other countries are interested in seeing a
group of experts pursue the work for possible adoption in other
standards or a future C, but not C9X.

Public comment dispositions:
CA: All comments have been addressed.
DK: All comments have been addressed.  IOHW stands as a point of disagreement.
NO: All comments have been addressed.
__STDC_ISO_10646__ macro proposed, tabled.
The long long objection is to be revisited.
All other comments have been addressed.
CH 7, PC-UK0028, & PC-UK0084 deal with the same editorial issue & will 
be fixed by the editor.
Two comments are being dealt with by the FP group.
All other comments have been addressed.
Dropping atoll:
Prior documented committee rationale was that it is a simpler
interface that can be used when the input value is known to be valid.
MacDonald objected to dropping atoll on the grounds that it can be
implemented much more efficiently than strtoll.
Keaton expects that if atoll is dropped, it will be widely implemented 
and cause large amounts of nonstandard code.
Use of null considered editorial;  will be implemented by editor.
All other comments have been addressed.

Long long:
JP wants to make it optional;  FR & UK want it removed.
JP opposes the requirement for a 64-bit type because it is a burden on 
embedded systems.  FR opposes the spelling of long long and wants to
use a stdint.h type instead (either intleast64_t or intmax_t).
Much debate ensued.

Moved Keaton/Seymour:  Adopt N815 plus 3 changes.
1.  Explicitly allow #undef of bool, true, false.
2.  Deprecate nonstd. use of bool, true, false in future
lang. directions.
3.  Add rationale for _Bool.
*FV J11 9/1/1/6/17
*FV WG14 5/0/0/1

long long:
Country positions seem incompatible at present.

Disposition of public comments not finished in subgroups:
PC-UK0003 (previously discussed & tabled):
Walls will lead a subgroup to evaluate this.
PC-UK0007:  Plum will lead a subgroup.
PC-UK0009:  Hoerth will lead a subgroup.
PC-UK0017 (previously discussed & tabled):
John (DEC) will lead a subgroup.
PC-UK0021:  Closed (addressed by editor).
PC-UK0041:  Closed (addressed by editor).
PC-UK0044:  Closed (addressed by editor).
PC-UK0051:  Closed (addressed by N815 as amended).
PC-UK0073:  Closed (addressed by editor).
PC-UK0082:  Accepted as editorial.
PC-UK0088:  Rejected due to insufficient utility.
PC-UK0089:  Draft is as intended.
PC-UK0092:  Insufficient utility.
PC-UK0096:  Accepted.
PC-UK0108:  No change necessary.  These expressions will never be evaluated.
PC-UK0115:  Editorial.
PC-UK0116:  Clear enough.
PC-UK0118:  Equivalent to main issue 3, restrict;  closed.
PC-UK0121:  Insufficient utility, and might invalidate some useful
implementations (e.g. certain DSPs).
PC-UK0122:  Careful reading.
PC-UK0170:  Closed (addressed by subgroup).
UKmain5:  Closed.
US1.2:  Meyers N832 addresses this.  N832 is unanimously adopted.
PC-UK0007:  Reply no.
US5.1:  Add to std that where isctrl(c) == 0, isprint(c) != 0.
PC-UK0017:  Words suggested by subgroup to implement change.
US7.12:  Clear enough.
FR 10646 macro:  Proposed accept macro with 10646 date as value.
FR issues now closed out except for long long.
US10.13:  Accepted.
US10.14:  Drop tmx?  Open.
PC-UK0167:  No.
PC-UK0168:  Editorial.
PC-UK0171:  No.
PC-UK0172:  Duplicate of 168.
PC-UK0131:  Who wants to make this change (success/failure return values)?
*SV 8/0
*SV WG14 3/0/2

Items for tomorrow:
long long
X/Open FP compatibility N826
NaN handling from IEC 559

-- J11 TAG meeting
Quorum was called.  10 members present, constituting a quorum.

*FV  Jaeschke/Benito:  Move we withdraw CIB#1:1993.
	Roll call vote:
	Benito          Yes
	Harris		Yes
	Hoerth		Yes
	Jaeschke	Yes
	Jones		Yes
	Keaton		Yes
	MacDonald	Yes
	Parks		Yes
	Plum		Yes
	Seymour		Yes
	Walls		Yes
Motion passed 11/0/0/6/17.

US delegation for October:
Seymour, Jones, Tydeman, Walls

-- 1998-06-26
Single Unix issues, Thomas, N826 item 4
Single Unix requires hypotg(inf, NaN) to return a NaN.  C9X requires
it to return infinity.  Recommend X/Open change their specification to 
make this implementation defined.
Single Unix requires pow(+0.0, -2) to return -HUGE_VAL and C9X
requires it to return HUGE_VAL.  Recommend X/Open allow this to be
implementation defined.
Single Unix defines gamma to be equivalent to lgamma.  C9X will change 
the name to tgamma for "true gamma."

nan function, Thomas, N817 (Tydeman)
Proposal requests that the nan function change to be defined in terms
of the strtod function all the time.
More investigation is needed.  Ongoing discussion will continue
outside the meeting.
The editor will remove this change from the draft.

Creating Complex Numbers, Thomas, N818 (Tydeman)
This paper is withdrawn since it was dependent on a standalone
imaginary type.

definition of NaN support in terms of IEC-559, Thomas, N819 (Tydeman)
There was no support for additional restrictions to the definition of
NaNs.  Additional rationale will explain what is meant by an
implementation supporting quiet NaNs.

PC-UK0038, UCN issue involving pp-numbers:
#define a(x) a##x
a(2e)	// --> a2e
#define <russian-letter1>(<russian-letter2>) russian-letter1##russian-letter2
russian-letter1(2russian-letter2)	// --> russian-letter12russianletter2
Adopted unanimously.

21.  Administration
21.1.  Future Meetings
21.1.1.  Future Meeting Schedule
1998-10 05-09, Santa Cruz, California, US (SGI & Plum Hall), cotimed with C++.
1999-02 01-05, Portland, Oregon, US (Intel).
1999-06 to be determined (possibly UK).
Keaton requested avoiding conflict with SIGPLAN PLDI, June 21-26.
[Since the WG14 meeting, SIGPLAN PLDI has been moved to May 1-5.]
1999-10 Hawaii, US (Plum Hall) cotimed with C++.

21.1.2.  Future Agenda Items
E-mail to Jaeschke.  Items are limited to closing out the draft.
Target for getting the FCD to ISO is 1st of August.
ISO can put it out for public comment within one week.  ITI has a 2-3
week lead time.  Comment periods should close by early January for
processing at the February meeting.

21.1.3.  Future Mailings
post-Copenhagen 24 July
pre-Santa Cruz 7 September
post-Santa Cruz 6 November

21.2.  Resolutions
21.2.1.  Review of Decisions Reached
Some 400 issues were addressed;  they will be dealt with editorially
rather than have formal votes for each one.

21.2.2.  Formal Vote on Resolutions
Walls/Keaton:  Move we ask SC22 not to require C++ to track us.
*FV J11:  11/0/0/6/17
*FV WG14:  4/0/0/2
Walls/Keaton:  Move we submit the FCD in August.
*FV J11:  10/0/1/6/17
*FV WG14:  4/0/0/2

21.2.3.  Review of Action Items
Subgroup responses will be handled through the editorial process
rather than including them in the minutes.

21.2.4.  Thanks to Host

21.3.  Other Business
Rationale review group to be detailed & scheduled later by Jaeschke.
Gathering of public comments:  John Benito is the focal point.
Public comment due date is Tuesday, 1998-07-21.
Tentative editorial review meeting in Santa Cruz, 1st week of August.

21.4.  Return to some previously tabled items.
struct tmx:
*A  Kristoffersen will collect industry input regarding existing practice.
*A  Leca will discuss the issue with Feather.

long long:
Plum proposed that the minimum precision be lowered to 32 bits for a
freestanding environment.  Japan indicated that this would remove
their objection to the type.
Farance objected to different limits.  He prefers that long long
either exist in full or not exist at all for freestanding
*SV J11 Who can live with long long being dropped?  6/4/2
There was general agreement that an at-least 64-bit integer type is a
sematic requirement for hosted implementations, but not for
freestanding implementations.
MacDonald stated that vendors will have to continue to implement long
long because it is an industry standard even though it is not part of
Keaton expressed concern for the future of C if long long is
removed;  if the committee cannot codify existing practice, then the
standard will become meaningless and vendors will each go their own
Who can live with long being the longest integer type?
*SV J11 0/11
*SV WG14 0/4/1
Plum suggests we indicate in the draft that committee sentiment is to
require a 64-bit integer type for hosted implementations only.
Simonsen suggests we resolve this issue between now and the August
editorial review meeting.