Index: thread/detail/invoke.hpp =================================================================== --- thread/detail/invoke.hpp (revision 83950) +++ thread/detail/invoke.hpp (working copy) @@ -199,39 +199,39 @@ #endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES -//#elif ! defined(BOOST_NO_SFINAE_EXPR) && -// ! defined BOOST_NO_CXX11_HDR_FUNCTIONAL -// -// template -// inline -// Ret invoke(BOOST_THREAD_RV_REF(Fp) f) -// { -// return f(); -// } -// template -// inline -// Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1) -// { -// return std::bind(boost::forward(f), boost::forward(a1))(); -// } -// template -// inline -// Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1, BOOST_THREAD_RV_REF(A2) a2) -// { -// return std::bind(boost::forward(f), boost::forward(a1), boost::forward(a2))(); -// } -// template -// inline -// Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1, BOOST_THREAD_RV_REF(A2) a2, BOOST_THREAD_RV_REF(A3) a3) -// { -// return std::bind(boost::forward(f), boost::forward(a1), boost::forward(a2), boost::forward(a3))(); -// } -// -//#define BOOST_THREAD_PROVIDES_INVOKE_RET +#elif ! defined(BOOST_NO_SFINAE_EXPR) && \ + ! defined BOOST_NO_CXX11_HDR_FUNCTIONAL + template + inline + Ret invoke(BOOST_THREAD_RV_REF(Fp) f) + { + return f(); + } + template + inline + Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1) + { + return std::bind(boost::forward(f), boost::forward(a1))(); + } + template + inline + Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1, BOOST_THREAD_RV_REF(A2) a2) + { + return std::bind(boost::forward(f), boost::forward(a1), boost::forward(a2))(); + } + template + inline + Ret invoke(BOOST_THREAD_RV_REF(Fp) f, BOOST_THREAD_RV_REF(A1) a1, BOOST_THREAD_RV_REF(A2) a2, BOOST_THREAD_RV_REF(A3) a3) + { + return std::bind(boost::forward(f), boost::forward(a1), boost::forward(a2), boost::forward(a3))(); + } + +#define BOOST_THREAD_PROVIDES_INVOKE_RET + #else // all //!!!!! WARNING !!!!! THIS DOESN'T WORKS YET -#define BOOST_THREAD_PROVIDES_INVOKE_RET +//#define BOOST_THREAD_PROVIDES_INVOKE_RET #if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)