1

我在接受解压可变模板参数的函数上使用延迟返回类型时遇到问题。这不会在 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;
}

任何帮助表示赞赏。

4

1 回答 1

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...);
};
于 2013-11-15T12:21:20.830 回答