C++ 模板如何处理可变参数?
考虑以下功能:C++ 模板如何处理可变参数?,c++,language-lawyer,C++,Language Lawyer,考虑以下功能: void f(...); 以及以下结构: template <class T> struct s; template <class R, class...A> struct s<R(A...)> { //... }; 模板 结构; 模板 结构 { //... }; 考虑到它的可变参数类型,s到底是如何处理的?decltype(f)不会与R(A…)(使用A类型列表)匹配,因此s不会编译。您需要R(A…)(一个双省略号)来匹配它。@
void f(...);
以及以下结构:
template <class T>
struct s;
template <class R, class...A>
struct s<R(A...)>
{
//...
};
模板
结构;
模板
结构
{
//...
};
考虑到它的可变参数类型,
s
到底是如何处理的?decltype(f)
不会与R(A…)
(使用A
类型列表)匹配,因此s
不会编译。您需要R(A…)
(一个双省略号)来匹配它。@ecatmur将停止匹配函数的非变量版本,不是吗?会的。你需要两种专长。根据您试图实现的目标,您可能需要全力以赴,比如实现。