namespace std {
  class messages_base {
  public:
    using catalog = unspecified signed integer type;
  };
  template<class charT>
    class messages : public locale::facet, public messages_base {
    public:
      using char_type   = charT;
      using string_type = basic_string<charT>;
      explicit messages(size_t refs = 0);
      catalog open(const string& fn, const locale&) const;
      string_type get(catalog c, int set, int msgid,
                       const string_type& dfault) const;
      void close(catalog c) const;
      static locale::id id;
    protected:
      ~messages();
      virtual catalog do_open(const string&, const locale&) const;
      virtual string_type do_get(catalog, int set, int msgid,
                                 const string_type& dfault) const;
      virtual void do_close(catalog) const;
    };
}
Values of type
messages_base::catalog
usable as arguments to members
get
and
close
can be obtained only by calling member
open.catalog open(const string& name, const locale& loc) const;
Returns: 
do_open(name, loc). string_type get(catalog cat, int set, int msgid, const string_type& dfault) const;
Returns: 
do_get(cat, set, msgid, dfault). void close(catalog cat) const;
Effects: 
Calls
do_close(cat). catalog do_open(const string& name, const locale& loc) const;
Returns: 
A value that may be passed to
get()
to retrieve a message from the message catalog identified by the string
name according to an 
implementation-defined mapping
.  The result can be used until it is passed to
close().Returns a value less than 0 if no such catalog can be opened
.Remarks: 
The locale argument 
loc
is used for character set code conversion when retrieving
messages, if needed
. string_type do_get(catalog cat, int set, int msgid, const string_type& dfault) const;
Preconditions: 
cat is a catalog obtained from
open()
and not yet closed
. Returns: 
A message identified by arguments 
set, 
msgid, and 
dfault, according
to an 
implementation-defined mapping
.  If no
such message can be found, returns 
dfault.void do_close(catalog cat) const;
Preconditions: 
cat is a catalog obtained from
open()
and not yet closed
. Effects: 
Releases unspecified resources associated with  
cat. Remarks: 
The limit on such resources, if any, is 
implementation-defined
.