【发布时间】:2013-01-06 15:21:53
【问题描述】:
我试图了解类型衰减的本质。例如,我们都知道数组在特定上下文中衰减为指针。我的尝试是了解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)。
我能解释一下为什么会这样吗?为什么数组类型与预期的指针类型不对应?
【问题讨论】:
标签: c++