gpt4 book ai didi

c++ - 为什么数组匹配 std::extent 第二个 imp?

转载 作者:行者123 更新时间:2023-11-30 05:16:05 24 4
gpt4 key购买 nike

gnuc++ 4.8.2 extent实现如下:

/// extent

template<typename, unsigned _Uint>
struct extent: public integral_constant<std::size_t, 0>
{static const int _ty = 1;};

template<typename _Tp, unsigned _Uint, std::size_t _Size>
struct extent<_Tp[_Size], _Uint>
: public integral_constant<std::size_t,_Uint == 0 ?
_Size : extent<_Tp,_Uint - 1>::value>
{ static cosnt int _ty =2; };

template<typename _Tp, unsigned _Uint>
struct extent<_Tp[], _Uint>: public integral_constant<std::size_t,
_Uint == 0 ? 0 : extent<_Tp,_Uint - 1>::value>
{ static cosnt int _ty =3; };

typedef int arr[2][3][3];

cout << extent<arr>::_ty是 2.

为什么数组匹配第二个工具?什么是_Tp[]

我想知道如何extent作品:o

最佳答案

你正在有效地做:

std::extent<int[2][3][3]>

在第二个模板中,实例化范围接受具有已知大小 (_Tp[_Size]) 的数组模板参数。这就是您所拥有的。

在第三个模板中,实例化 extent 接受一个大小未知的数组模板参数 (_Tp[])。这不是您拥有的。

现在对于第一个模板,它变得更加明显,这是一个“默认”模板,在使用非数组类型实例化范围时使用。这不是您拥有的。

要回答你的第二个问题,_Tp[] 代表一个未知大小的数组类型,例如 int[]

关于c++ - 为什么数组匹配 std::extent 第二个 imp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825249/

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