我试图了解类型衰减的本质。例如,我们都知道数组在特定上下文中衰减为指针。我的尝试是了解二维数组如何int[]
等同于但如何与预期的指针类型不对应。int*
这是一个测试用例:
std::is_same<int*, std::decay<int[]>::type>::value; // true
这会按预期返回 true ,但这不会:
std::is_same<int**, std::decay<int[][1]>::type>::value; // false
为什么这不是真的?我终于找到了一种让它返回 true 的方法,那就是将第一个维度设为指针:
std::is_same<int**, std::decay<int*[]>::type>::value; // true
并且该断言适用于任何具有指针但最后一个是数组的类型。例如 ( int***[] == int****; // true
)。
我可以解释为什么会这样吗?为什么数组类型与预期的指针类型不对应?