参数声明中的"const T const"
"const T const" in parameter declaration
前几天我遇到了这段代码:
template< class T >
T findMax(const T const * data,
const size_t const numItems) {
// Obtain the minimum value for type T
T largest =
std::numeric_limits< T >::min();
for(unsigned int i=0; i<numItems; ++i)
if (data[i] > largest)
largest = data[i];
return largest;
}
为什么每个参数都包含两个const
?
这没有有意义的理由。此外,这种明确重复const
限定词在C++是非法的。代码格式不正确。
7.1.6.1 简历限定词 [dcl.type.cv]
1 有两个 cv 限定符,常量和易失性。每个 cv 限定符在 cv-seq 中最多出现一次。
可以在 C++ 声明中引入冗余const
,但这需要将以前的const
"隐藏"在 typedef-name 中。在这种形式下,减退将是合法的,多余的限定词将被忽略。
const
修饰符之一是多余的;在这里有两个只不过是一个(如果这至少没有发出警告,我会感到惊讶)。
作者的意思可能是const T* const
,它是指向T
的常量实例的常量指针。
相关文章:
- 为什么函数声明中允许 const?
- 在内存不足之前,我可以声明多少个 const 变量?
- 如何在声明为 const 的方法中更改类成员
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 可以使用<size_t>static_const(),std::as_const()或static_cast<const size_t>()来声明数组吗?
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 声明与 const 变量和成员函数相同的标识符
- 为什么我不能声明一个 constexpr 本地,而一个 const 一个工作?
- 类中的const声明
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 为什么我们在这个函数声明中使用 const 和 & ?
- 不可变的全局对象应该声明为"const my_result_t BLAH"还是"extern const my_result_t BLAH;"?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 如何在类中声明静态 const 结构元素
- 当我将 const int 声明/初始化为 5 时,它被初始化为一个大数字
- CPP主方法const声明
- 函数的Const声明
- 正在修改const声明对象上的可变对象的未定义行为
- 阅读复杂const声明的简单规则
- Const声明好奇