当前位置:  开发笔记 > 编程语言 > 正文

typedef中C样式数组的维度

如何解决《typedef中C样式数组的维度》经验,为你挑选了1个好方法。

我对C++中C风格数组的维度有疑问.在使用声明/ typedef时,使用多个维度时,维度似乎很奇怪.例如:

using A1 = int[23]; //! << A1 = int[23]
using A2 = A1[4];   //! << A2 = int[4][23]

std::cout << std::is_same::value << std::endl; //false
std::cout << std::is_same::value << std::endl; //true

我认为A2的类型是int [23] [4]而不是int [4] [23].在下面的代码段中观察到相同的行为:

template
struct ArrayTest;

template
struct ArrayTest
{
    using type = T;
};

ArrayTest::type A3;  //! T is int[2][45], N is 23 

在这个例子中,我认为类型将是int [23] [2]而不是int [2] [45].有谁知道为什么这样的类型推断?我试图在标准中找到解释,但我想我看起来不够努力.



1> juanchopanza..:

有谁知道为什么这样的类型推断?

using A2 = A1[4];

A2是一个长度为4的A1对象数组.

using A1 = int[23];

A1是长度为23的数组int.所以类型A2是长度为4的长度为23的数组int,或者int[4][23].

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有