
David Abrahams wrote:
"Fredrik Blomqvist" <fredrik_blomqvist@home.se> writes:
Thorsten Ottosen wrote:
"David Abrahams" <dave@boost-consulting.com> wrote in message news:u1xar33ps.fsf@boost-consulting.com...
template< class Fun > struct indirect_fun { indirect_fun( Fun f ) : fun(f) { }
template< class T > typename result_of<Fun(typename pointee<T>::type)>::type operator()( T const& r ) const { return fun( *r ); }
yeah, this is good stuff, mind if I borrow it?
Wouldn't it be a good thing to use the full result_of "protocol" as specified in the docs (and more specifically in the N1454) ?
Namely what? Am I missing some cv qualification and references?
That indirect_fun would benefit from supplying the nested result<> template that result_of uses to deduce return types. Basically this is what I labelled the result_of "protocol" (for function objects). [from docs/1454 by Douglas Gregor] "When F is a class type with a member type result_type, result_of<F(T1, T2, ..., TN)> is F::result_type. Otherwise, result_of<F(T1, T2, ..., TN)> is F::result<F(T1, T2, ..., TN)>::type when N > 0 or void when N = 0." Regards // Fredrik Blomqvist