** Document Number: WG21/N0888 = X3J16/96-0070
** Reply to:       Nathan Myers <ncm@cantrip.org>
** Date:           13 Mar 1996
 
** Work Group:     Library: Localization Clause 22
** Issue Number:   22-062
** Title:          ctype<char> member table() size overspecified
** Sections:       [lib.locale.ctype.char.members]
** Status:         active
 
** Description:
 
The size of the table used by ctype<char> is specified in the
WP to be of size UCHAR_MAX+1.  This may be an arbitrarily large
value, too large for practicality in some implementations.
 
** Discussion:
 
There is no reason all implementations need to have a table
this large, if it is large.  For very large values of UCHAR_MAX,
the set of actual character codes used is always much smaller.
 
** Proposed Resolution:
 
In [lib.facet.ctype.special] 22.2.1.3
 
  Add a public member:
 
    static const size_t table_size = IMPLEMENTATION_DEFINED;
 
  Add a sentence:
 
    The implementation-defined value of table_size is at least 256.
 
In [lib.facet.ctype.char.members] 22.2.1.3.2 (p. 22-16),
add a paragraph before the member descriptions:
 
  In the following member descriptions, for unsigned char values v
  where (v >= table_size), table()[v] is assumed to have an
  implementation-defined value (possibly different for each such
  value v) without performing the array lookup.
 
In [lib.facet.ctype.char.statics] 22.1.3.3
 
  Change the table size to (simply) table_size.
 
In [lib.facet.ctype.char.members] 22.2.1.3.2, in the constructor, add:
 
  Precondition: tab either 0 or an array of at least table_size
    elements.