** Document Number: WG21/N0888 = X3J16/96-0070 ** Reply to: Nathan Myers ** Date: 13 Mar 1996 ** Work Group: Library: Localization Clause 22 ** Issue Number: 22-062 ** Title: ctype member table() size overspecified ** Sections: [lib.locale.ctype.char.members] ** Status: active ** Description: The size of the table used by ctype 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.