std::remove_cv<const int[3]>
应该生成什么类型? int[3]
或const int[3]
?
const int[3]
是array of 3 const int
权限?,没有顶级cv限定符。那么它不应该产生const int[3]
吗?我认为最新版本的gcc / libstdc ++正在生成int[3]
。这是一个错误吗?为什么/为什么不呢?
答案 0 :(得分:8)
N4140§3.9.3[basic.type.qualifier] / p5,强调我的:
应用于数组类型的Cv限定符附加到底层 元素类型,因此符号“
cv T
”,其中T
是数组类型, 指的是一个元素是如此合格的数组。 数组类型 其元素是cv-qualified也被认为具有相同的元素 cv-qualifications作为其元素。 [示例:typedef char CA[5]; typedef const char CC; CC arr1[5] = { 0 }; const CA arr2 = { 0 };
arr1
和arr2
的类型是“5const char
的数组”, 数组类型被认为是const
- 合格。 - 结束示例]