Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板如何处理可变参数?_C++_Language Lawyer - Fatal编程技术网

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将停止匹配函数的非变量版本,不是吗?会的。你需要两种专长。根据您试图实现的目标,您可能需要全力以赴,比如实现。