gpt4 book ai didi

c++ - std::array 的演绎指南

转载 作者:太空狗 更新时间:2023-10-29 20:34:09 25 4
gpt4 key购买 nike

我阅读了 C++ 模板独特指南一书,并尝试了解 std::array 的推导指南是如何工作的。关于标准定义声明如下

template <class T, class... U>
array(T, U...) -> array<T, 1 + sizeof...(U)>;

例如,如果在 main 中创建一个数组

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

扣除是如何发生的?

谢谢

最佳答案

How the deduction takes place?

很简单。

打电话

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

匹配

array(T, U...)

T = decltype(42)U... = decltype(45), decltype(77)那是 T = intU... = int, int .

所以 a{42,45,47} 的类型成为array<T, 1 + sizeof...(U)> , 所以 std::array<int, 1 + sizeof...(int, int)> , 所以 std::array<int, 1 + 2>那是 std::array<int, 3>

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

关于c++ - std::array 的演绎指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com