Lambda 如何返回依赖于模板参数的函数类型?

Lambda 如何返回依赖于模板参数的函数类型?,lambda,c++11,function-object,Lambda,C++11,Function Object,我想返回一个std::function,其类型取决于我的函数模板的一个模板参数的类型 // Return a function object whose type is directly dependent on F template<typename F, typename Arg1, typename Arg2> auto make_f2_call(Arg1&& arg1, Arg2&& arg2) -> std::function&

我想返回一个
std::function
,其类型取决于我的函数模板的一个模板参数的类型

// Return a function object whose type is directly dependent on F
template<typename F, typename Arg1, typename Arg2>
auto make_f2_call(Arg1&& arg1, Arg2&& arg2)
    -> std::function<--what-goes-here?-->
{
    return [arg1, arg2](F f) { return f(arg1, arg2); };
}

// Usage example, so that it's clearer what the function does:
...
typedef bool (*MyFPtrT)(long id, std::string const& name);
bool testfn1(long id, std::string const& name);
...
auto c2 = make_f2_call<MyFPtrT>(i, n); // std::function<bool(F)>
...
bool result = c2(&testfn1);
//返回类型直接依赖于F的函数对象
模板
自动发出呼叫(Arg1&&Arg1、Arg2&&Arg2)
->std::函数
{
return[arg1,arg2](F){return F(arg1,arg2);};
}
//用法示例,以便更清楚地了解函数的作用:
...
typedef bool(*MyFPtrT)(长id,标准::字符串常量和名称);
bool testfn1(长id,std::string const&name);
...
自动c2=发出呼叫(i,n);//std::函数
...
bool结果=c2(&testfn1);
逻辑上,这里是什么?应该是返回类型为
F
并接受类型为
F
的参数的函数签名,但我似乎无法告诉我的编译器(Visual Studio 2010 Express)这一意图。(注意:在用法示例中,它将是
std::function

(注意:我尝试了
std::result\u of::type
的变体,但没有成功。)


这在C++0x中可能吗?

下面为我编译了GCC 4.5.3和MSVC 2010 EE SP1

auto make_f2_call(Arg1&& arg1, Arg2&& arg2)
    -> std::function< typename std::result_of<F(Arg1, Arg2)>::type (F)>
{
auto make_f2_调用(Arg1&&Arg1、Arg2&&Arg2)
->std::function
{