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