// Build don't link: 
// GROUPS passed conversions
class A {};

template <class TP>
class B
{
  A &(*_f) (A &, TP);
  TP _a;
public:
  B (A &(*f) (A &, TP), TP a) : _f (f), _a (a) {}
  friend A &operator<< (A &o, const B<TP> &m)
    { (*m._f) (o, m._a); return o; }
};

A &setw (A &, int);
B<int> setw (int n)
{
  return B<int> (setw, n);
}

A x;

void f ()
{
  x << setw (2);
}
