Now let's take a look at the implementation of the inserter for our phone number class:
std::ostream& operator<< (std::ostream& os, const PhoneNumber& pn){
std::locale loc = os.getloc (); // 1
const phone_put& ppFacet
= std::use_facet<phone_put> (loc); // 2
os << ppFacet.put(pn._cntryName,
pn._areaCode, pn._extension); // 3
return (os);
}
| //1 | The inserter function uses the output stream's locale object (obtained via getloc()), |
| //2 | uses the locale's phone number facet object, |
| //3 | and calls the facet object's formatting service put(). |