Listing 1: Public view of template class moneypunct
// STRUCT money_base struct money_base : public locale::facet { enum part {symbol = '$', sign = '+', space = ' ', value = 'v', none = 'x'}; struct pattern { char field[4]; }; money_base(size_t refs = 0); }; template<class E, class Intl> class moneypunct : public money_base { public: typedef E char_type; typedef basic_string<E, char_traits<E>, allocator<E> > string_type; E decimal_point() const; E thousands_sep() const; string grouping() const; string_type curr_symbol() const; string_type positive_sign() const; string_type negative_sign() const; int frac_digits() const; pattern pos_format() const; pattern neg_format() const; explicit money_punct(size_t refs, bool intl); protected: virtual E do_decimal_point() const; virtual E do_thousands_sep() const; virtual string do_grouping() const; virtual string_type do_curr_symbol() const; virtual string_type do_positive_sign() const; virtual string_type do_negative_sign() const; virtual int do_frac_digits() const; virtual pattern do_pos_format() const; virtual pattern do_neg_format() const; }; //End of File