函数参数获取错误

时间:2018-03-24 07:29:47

标签: c++ templates variadic-templates specialization

我有一个可变参数模板专业化,如下所示:

template <typename T> struct MakeASXFunc;

template <typename R, typename... Args>
struct MakeASXFunc<R (Args...)>
{
    std::tuple<Args...> m_args;
    void operator ()(Args&&... args)
    {
        m_args(std::make_tuple(std::forward<Args>(args)...));
    }
};

当我需要使用它时:

MakeASXFunc<void (int, int)> f;
f(54, 54);

我会收到错误: 错误C2064:术语不评估为采用1个参数的函数

为什么会这样?运算符重载函数采用可变参数,这个错误怎么可能?

P.S。我正在使用MSVC ++ 15.6.2

1 个答案:

答案 0 :(得分:1)

此行,您正在调用元组:

max-lateness=-1

显然元组不可调用。使用作业:

    m_args(std::make_tuple(std::forward<Args>(args)...));