Listing 1: class locale

namespace std {
    class locale {
    public:
    // types:
      class facet;
      class id;
      typedef int category;
      static const category   // values are for exposition only
        none     = 0,
        collate  = 0x010, ctype    = 0x020,
        monetary = 0x040, numeric  = 0x080,
        time     = 0x100, messages = 0x200,
        all = collate | ctype | monetary
            | numeric | time  | messages;
    // construct/copy/destroy:
      locale() throw()
      locale(const locale& other) throw()
      explicit locale(const char* std_name);
      locale(const locale& other,
        const char* std_name, category);
      template <class Facet>
        locale(const locale& other, Facet* f);
      template <class Facet>
        locale(const locale& other, const locale& one);
      locale(const locale& other,
        const locale& one, category);
     ~locale() throw();  // non-virtual
      const locale& operator=(const locale& other) throw();
    // locale operations:
      basic_string<char> name() const;
      bool operator==(const locale& other) const;
      bool operator!=(const locale& other) const;
      template <class charT, class Traits, class Allocator>
        bool operator()
            (const basic_string<charT, Traits, Allocator>& s1,
            const basic_string<charT, Traits, Allocator>& s2) const;
    // global locale objects:
      static locale global(const locale&);
      static const locale& classic();
    };
  }
//End of File