我在接受解压缩的可变参数模板参数的函数上使用延迟返回类型时遇到问题

时间:2013-11-15 00:51:18

标签: c++ templates

我在接受解压缩的可变参数模板参数的函数上使用延迟返回类型时遇到问题。这不能在Nov CTP Visual Studio中编译。

template <typename Function, typename ...Args>
auto invoke ( Function f, Args... args)
    -> decltype(f(args...))
{

    return f(args...);
}

int foo(int x, const char* y = "Hello") {
    cout << x << " : " << y << endl;

    return x;
};

int _tmain(int argc, TCHAR* argv[]) {

    auto v = invoke(&foo, 10, "Hello There");
    cout << v << endl;

    return 0;
}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

万一有人需要它。以下解决方法对我有用。

template <typename F> struct freturn_type;
template <typename R, typename... A>
struct freturn_type<R (*)(A...)>
{
    typedef R type;
};


template <typename Function, typename ...Args>
typename freturn_type<Function>::type invoke ( Function f, Args... args)
    //-> decltype(f(args...))
{
    return f(args...);
};