1*c87b03e5Sespie // Build don't link:
2*c87b03e5Sespie // GROUPS passed conversions
3*c87b03e5Sespie class A {};
4*c87b03e5Sespie 
5*c87b03e5Sespie template <class TP>
6*c87b03e5Sespie class B
7*c87b03e5Sespie {
8*c87b03e5Sespie   A &(*_f) (A &, TP);
9*c87b03e5Sespie   TP _a;
10*c87b03e5Sespie public:
B(A & (* f)(A &,TP),TP a)11*c87b03e5Sespie   B (A &(*f) (A &, TP), TP a) : _f (f), _a (a) {}
12*c87b03e5Sespie   friend A &operator<< (A &o, const B<TP> &m)
13*c87b03e5Sespie     { (*m._f) (o, m._a); return o; }
14*c87b03e5Sespie };
15*c87b03e5Sespie 
16*c87b03e5Sespie A &setw (A &, int);
setw(int n)17*c87b03e5Sespie B<int> setw (int n)
18*c87b03e5Sespie {
19*c87b03e5Sespie   return B<int> (setw, n);
20*c87b03e5Sespie }
21*c87b03e5Sespie 
22*c87b03e5Sespie A x;
23*c87b03e5Sespie 
f()24*c87b03e5Sespie void f ()
25*c87b03e5Sespie {
26*c87b03e5Sespie   x << setw (2);
27*c87b03e5Sespie }
28