
Jeremy Siek <jeremy.siek@gmail.com> writes:
It's early in the morning, but I'll do my best...
In this outer scope, the type 'r' models Sequence<int>, so the call to f type checks.
Inside of function f, 'S1' models Sequence<int> and 'r' models Sequence<int*>.
Cool, that's the key thing. Now, it's great that you can get there by using two scopes. You could imagine wanting to do the same thing from within a single function, but I don't think that's so easy.
The call to transform will not type check because the requirement Sequence<int*> S1 is not satisfied.
Because I got the requirements on transform backwards. Shoulda been: template <class T, Sequence<T> S2, Sequence<T*> S1, UnaryFunction<T,T*> F> void transform(S1 const& src, S2& dst, F f) I fear we're OT for Boost, now, though. Maybe we should take this private. -- Dave Abrahams Boost Consulting www.boost-consulting.com