添加额外的常量会导致编译器错误

用户名

这在GCC 8.2上可以正常编译:

class M
{
public:
    const Pointer* getPointer() const {return _ptr;}
private:
    Pointer* _ptr{nullptr};
};

但是当我向函数添加另一个const时:

class M
{
public:
    const Pointer* const getPointer() const {return _ptr;}
private:
    Pointer* _ptr{nullptr};
};

我收到编译器错误:

error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]

为什么不让我添加额外的常数?从什么时候开始额外的const不好?

戴着帽子的公鸡

因为const像这样按值返回值对于带或不带都没有区别。

例如:

const int GetMyInt()
{
  int k = 42;
  return k;
}

//later..
int ret = GetMyInt();
// modify ret.

因为无论如何,返回的值GetMyInt都将被复制到其中ret(不考虑(N)RVO),因此具有GetMyInt返回值const没有区别。

通常,这是一个警告,因为它是多余的代码,但是-Werror将每个警告变成错误,因此就可以了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有actionBlock的宏会导致编译器错误

嵌套的“ static_for”会导致编译器错误

比较枚举的值会导致编译器错误

嵌套类结构会导致编译器错误

Swift:使用`var`会导致编译器警告,使用`let`会导致编译器错误?

常量修改编译器错误

错误的重载导致编译器错误

模板模板参数会导致Clang下的编译器错误,但不会导致GCC

DataBinding导致Kotlin编译器错误

条件类型添加了额外的泛型编译器错误

第三方库会导致“未定义的引用”编译器错误?

为什么将基类用于方法引用会导致编译器错误

使用打字稿和babel-polyfill会导致编译器错误

为什么此嵌套的通用类型转换会导致编译器错误

理解产量会导致类型不匹配的编译器错误

C ++使用匿名对象调用函数会导致编译器错误

在Window上设置设计时间DataContext会导致编译器错误?

在switch语句中定义块会导致编译器错误

在C ++程序中使用libcurl会导致Visual C ++编译器发出错误

静态类方法重载使用会导致编译器错误

在人造丝线程中调用`Arc :: new()`会导致垃圾编译器错误

使用编译器选项生成d.ts文件会导致角度错误

为什么编译器会导致“处理时检测到循环......”的错误?

在编译行中添加“ -march = native” intel编译器标志会导致KNL上出现浮点异常

Live Sass编译器-@use导致编译错误

VC ++使用fp:fast会导致错误的结果(不仅是不准确的)-这是编译器错误吗?

比较器 reversed() 导致编译器错误

使用来自 forge-viewer/node_modules/@types/three 的 THREE 会导致编译器错误

派生特征会导致意外的编译器错误,但是手动实现有效