
Daniel Walker wrote:
In my patch for result_of, lack of support for has_template_xxx is handled by checking BOOST_MPL_CFG_NO_HAS_TEMPLATE_XXX. In this case, partial specializations for lambda::lambda_functor are provided so that lambda expressions can be supported, even though user defined functors using sig<> cannot. result_of already requires that the compiler support partial specialization. So, to the best of my knowledge, this doesn't add an additional limitation on the number of compilers result_of can work on.
If 'result_of' customization way is not enough, why not introduce a customization point. template<typename F, typename FArgs, typename EnableIf> struct extend_result_of; Then, the customizations for lambda is placed at <boost/lambda/result_of.hpp>. That's generics. :-) Anyway I don't recommand to touch 'result_of' for now. IIRC, 'result_of' was born a few weeks ago; for VC++7.1/8 users. Before Mr.Niebler's patch, it had been broken for long years because of VC++ bugs. As I pointed, a lambda::functor doesn't need any patch. 'bind' turns a function using 'sig' into a lambda::functor. Thus, we have nearly everything without any patch. On the other hand, "result_of<lambda>" project will be an interesting work. What does "result_of<bind(..)>" return? I want to know it :-) Regards, -- Shunsuke Sogame