Small Locale Fixes #3           25-Jan-95
  ---------------------                              X3J16/95-0025
  by Nathan Myers,  myersn@roguewave.com              WG21/N0625
     Rogue Wave Software
 
  1. locale::name() overconstrained
 
  The member locale::name() is defined to return a reference to
  const string.  This overconstrains implementations, which might
  better construct the name on demand.  Therefore, I propose to
  change the return value to simply "string".
 
 
  2. Wrong character types used.
 
  In several places in the locale specification the wrong type of
  character is used to instantiate a template.  In particular:
 
  a. std::messages::do_open() should take a const char* argument,
     rather than a basic_string<charT>, because that argument
     represents an external environment name, not a message string.
 
  b. std::collate members should take arguments of type const charT*
     (where charT is the template parameter) rather than const char*.
     This is almost an editorial matter.
 
 
  3. money_base::part::symbol non-portable
 
  The value of money_base::part::symbol is defined as equal to
  '$'.  This character is not necessarily part of the source
  character set available for character constants.  Therefore,
  I propose replacing the assigned value with something portable.
  My recommendation is '?', subject to approval by those who know
  about portable source character sets.