首页 > 解决方案 > 为什么返回类型上的 'const' 限定符对标有 __forceinline/inline 的函数没有影响?

问题描述

我正在用 clang 编译我的 C++ 代码,并且想知道编译器错误背后的含义:

error : 'const' type qualifier on return type has no effect

以下语法会生成错误:

inline const int foo();

__forceinline const bool bar();

标签: c++clang

解决方案


这实际上是一个警告,由命令行开关升级为错误。它与inlineor无关,__forceinline并且非常不言自明。

constvolatile函数返回类型的限定符,当函数按 value 返回时,没有任何意义,因为从概念上讲,返回的值要么被丢弃,要么用作调用方初始化对象的临时值。const/volatile该对象的资格在调用者的管辖范围内。例如,int从返回的函数调用初始化可变变量是完全合法的const int


推荐阅读