【发布时间】:2015-03-02 10:36:11
【问题描述】:
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]。这是一个错误吗?为什么/为什么不?
【问题讨论】:
-
虽然这种行为是明智的,但我想知道它是如何合理的......(可以将其解读为
const3 个int的数组。) -
实际上,它将最终使用像
template <typename T> struct remove_cv<T const> { using type = T; };这样的专业化。我不认为T const[N]会匹配那个专业。 -
@DietmarKühl:标准规定“[结果类型] 应与 T 相同,但已删除任何顶级 cv 限定符。”
标签: c++ c++14 typetraits libstdc++