Returns: An object of unspecified type such that if
in is an object of type basic_istream<charT, traits>
then the expression in >> get_money(mon, intl) behaves as if it called
f(in, mon, intl), where the function f is defined as:
template<class charT, class traits, class moneyT>
void f(basic_ios<charT, traits>& str, moneyT& mon, bool intl) {
  using Iter     = istreambuf_iterator<charT, traits>;
  using MoneyGet = money_get<charT, Iter>;
  ios_base::iostate err = ios_base::goodbit;
  const MoneyGet& mg = use_facet<MoneyGet>(str.getloc());
  mg.get(Iter(str.rdbuf()), Iter(), intl, str, err, mon);
  if (ios_base::goodbit != err)
    str.setstate(err);
}
The expression 
in >> get_money(mon, intl) has type
basic_istream<charT, traits>& and value 
in.