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我用它来提取另一次的参数是的,我的错:)我试图初始化构造函数上的元组,然后。。。事情发生了。谢谢。是的,我就是这个意思。