
I wrote up the simple example that shows what I am trying to figure out Basically, I am trying to pull the deduced return type (or explicitly passed as a template param in lambda bind()) in my template. If I have a function that is receiving a functor, I would like to be able to take that functor and pull the RETURN TYPE out of it. Lets say I have a function that returns a string: std::string ReturnAString() { return "this is a string"; } And then here is my template function (code below does not compile) template < typename TFUNCTOR> TFUNCTOR::result_type CallFctorDeduceRet( TFUNCTOR & functor) { return functor(); } Now here is my bind call std::cout << ( bind<std::string>(&ReturnAString)); Is there a way to GET to the return type in the Lambda fctor that was generated with a BIND call? I would like to be able to pull the <std::string> from the bind call and use it in the template function. It is not a problem for my template function to be dependant upon lambda bind. I have been going through the lambda code. And while it is brilliant, I am having a bit of difficulty figuring out what I am looking at (grin). Any help or direction is greatly appreciated FULL SAMPLE CODE HERE: template <typename CURRIEDTYPE> // Id class for currying type without creating the object class Id { public: typedef CURRIEDTYPE TYPE; }; // Explictly pass IN a return type template < typename TFUNCTOR, typename TRET> TRET CallFctorPassInRet ( TFUNCTOR & functor, Id<TRET> & ) { Id<TRET>::TYPE TRet; TRet = functor(); return TRet; } std::string ReturnAString() { return "this is a string"; } // try to get return type from the lambda fctor // Below does not compile- but it is along the lines of what I // WANT to do- note that I am trying to get from the Lambda functor the deduced return type template < typename TFUNCTOR> TFUNCTOR::result_type CallFctorDeduceRet( TFUNCTOR & functor) { return functor(); } void Test_LambdaRetDeduction() { std::cout << "CallFctorPassInRet returns [" << CallFctorPassInRet( bind(&ReturnAString), Id<std::string>()) << "]" << std::endl; // below is what I want to make work std::cout << "CallFctorDeduceRet returns [" << CallFctorDeduceRet( bind<std::string>(&ReturnAString)) << "]" << std::endl; }