Minor Cleanup of Class locale X3J16/94-0188 ----------------------------- WG21/N0575 by Nathan Myers, Rogue Wave Software 27-Sep-94 myersn@roguewave.com The standard locale interface in the Draft includes member function templates for the convenience of those converting old code. They are declared as follows. class locale { ... // convenience interfaces template inline bool isspace(charT c); template inline bool isprint(charT c); template inline bool iscntrl(charT c); template inline bool isupper(charT c); template inline bool islower(charT c); template inline bool isalpha(charT c); template inline bool isdigit(charT c); template inline bool ispunct(charT c); template inline bool isxdigit(charT c); template inline bool isalnum(charT c); template inline bool isgraph(charT c); template inline charT toupper(charT c); template inline charT tolower(charT c); }; This proposal is to remove these declarations from the class locale itself, and replace them with templates global to the "std" namespace, as follows: template inline bool isspace(charT c, const locale&); template inline bool isprint(charT c, const locale&); template inline bool iscntrl(charT c, const locale&); template inline bool isupper(charT c, const locale&); template inline bool islower(charT c, const locale&); template inline bool isalpha(charT c, const locale&); template inline bool isdigit(charT c, const locale&); template inline bool ispunct(charT c, const locale&); template inline bool isxdigit(charT c, const locale&); template inline bool isalnum(charT c, const locale&); template inline bool isgraph(charT c, const locale&); template inline charT toupper(charT c, const locale&); template inline charT tolower(charT c, const locale&); Rationale --------- These functions, as members, clutter the locale interface. They make locale harder to learn, by violating its design model. They were provided for the convenience of those converting code, but the proposed change is more convenient for such users, at no cost to non-users or implementors.