------- Comment #12 from jwakely dot gcc at gmail dot com 2010-01-21 16:14 ------- Aha - I see what's happening.
As well as changing _Fn:result_type everywhere please change line 1327 in <future> to this: return async<_Fn, _Args...>(launch::any, std::forward<_Fn>(__fn), The problem is the wrong overload of async() is being selected, and it is trying to use launch::any as the functor, which gives the "cannot be used as a function" error. Paolo, this is the problem I had with std::bind, I think there might be a larger problem with overloaded variadic template functions ... I'll think about it further. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42819