C++ C++;函数参数获取错误中的变量模板特化

C++ C++;函数参数获取错误中的变量模板特化,c++,templates,variadic-templates,specialization,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) {

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

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;
模板
结构MakeASXFunc
{
std::元组m_参数;
void运算符()(Args&&…Args)
{
m_args(std::make_tuple(std::forward(args)…);
}
};
当我需要使用这个时:

MakeASXFunc<void (int, int)> f;
f(54, 54);
MakeASXFunc f;
f(54,54);
我将得到一个错误: 错误C2064:项的计算结果不是采用1个参数的函数

为什么是这样?运算符重载函数采用可变参数,这种错误怎么可能发生


另外,我正在使用MSVC++15.6.2

这一行,您正在调用一个元组:

    m_args(std::make_tuple(std::forward<Args>(args)...));
m_args(std::make_tuple(std::forward(args)…);
显然,元组是不可调用的。使用分配:

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

请提取MCVE。还有一个建议,对宏只使用
ALL\u UPPERCASE
。@JiveDadson我用它来提取另一次的参数是的,我的错:)我试图初始化构造函数上的元组,然后。。。事情发生了。谢谢。是的,我就是这个意思。