Apache C++ Standard Library User's Guide

## 26.8 Formatting Phone Numbers

As mentioned earlier, the virtual function in the base class facet `do_put()` must be overridden in derived classes to actually implement locale dependent formatting of phone numbers. In the example below, we show `do_put()` (see `//1`) being overridden in the derived facet class US_phone_put to implement formatting phone numbers in the US style. This overridden version will be called by the base class's `put()` member function

    class US_phone_put: public phone_put {
      ...
    protected:
      ...
      // perform formatting in the US style
      virtual string_type do_put(string_type cntryName,     //1
                                 string_type areaCode,
                                 string_type extension) const {
            ...
        }
    };

For the sake of brevity, we spare you here the details of the actual implementation of the formatting in `do_put()`.