我对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].在下面的代码段中观察到相同的行为:
templatestruct ArrayTest; template struct ArrayTest { using type = T; }; ArrayTest ::type A3; //! T is int[2][45], N is 23
在这个例子中,我认为类型将是int [23] [2]而不是int [2] [45].有谁知道为什么这样的类型推断?我试图在标准中找到解释,但我想我看起来不够努力.
有谁知道为什么这样的类型推断?
using A2 = A1[4];
A2
是一个长度为4的A1
对象数组.
using A1 = int[23];
A1
是长度为23的数组int
.所以类型A2
是长度为4的长度为23的数组int
,或者int[4][23]
.