Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
std::array的演绎指南 我通过C++模板独特的QuIDE,我试图理解演绎指南如何指导 STD::数组< /代码>作品。 关于标准的定义,以下是声明 template <class T, class... U> array(T, U...) -> array<T, 1 + sizeof...(U)>;_C++_Templates_C++17_Variadic Templates_Template Argument Deduction - Fatal编程技术网

std::array的演绎指南 我通过C++模板独特的QuIDE,我试图理解演绎指南如何指导 STD::数组< /代码>作品。 关于标准的定义,以下是声明 template <class T, class... U> array(T, U...) -> array<T, 1 + sizeof...(U)>;

std::array的演绎指南 我通过C++模板独特的QuIDE,我试图理解演绎指南如何指导 STD::数组< /代码>作品。 关于标准的定义,以下是声明 template <class T, class... U> array(T, U...) -> array<T, 1 + sizeof...(U)>;,c++,templates,c++17,variadic-templates,template-argument-deduction,C++,Templates,C++17,Variadic Templates,Template Argument Deduction,扣减是如何发生的 多谢各位 扣减是如何发生的 很简单 召唤 std::array a{42,45,77} 匹配 带有T=decltype(42)和Udecltype(45),decltype(77)即T=int和U..=int,int 所以a{42,45,47}的类型变成array,所以std::array,所以std::array,也就是std::array 换言之:提取参数的类型;第一个(T)用于为类型提供数组(第一个模板参数);其他的只用于计数(sizeof…(U))。但是,对于模板第二

扣减是如何发生的

多谢各位

扣减是如何发生的

很简单

召唤

std::array a{42,45,77}
匹配

带有
T=decltype(42)
Udecltype(45),decltype(77)
T=int
U..=int,int

所以
a{42,45,47}
的类型变成
array
,所以
std::array
,所以
std::array
,也就是
std::array

换言之:提取参数的类型;第一个(
T
)用于为类型提供数组(第一个模板参数);其他的只用于计数(
sizeof…(U)
)。但是,对于模板第二个参数,重要的是还要计算第一个参数(类型为
T
,因此
1+sizeof…(U)
)中的
1

std::array a{42,45,77}
array(T, U...)