我有一个可变参数模板专业化,如下所示:
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
答案 0 :(得分:1)
此行,您正在调用元组:
max-lateness=-1
显然元组不可调用。使用作业:
m_args(std::make_tuple(std::forward<Args>(args)...));