You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中const修饰的函数引用参数与普通函数引用参数是否等效

问题1 两个版本的参数是否等价

是完全等价的,此处给函数引用添加的const限定符没有任何实际作用,会被编译器直接忽略。
你可以通过标准库的类型萃取工具直接验证:

#include <type_traits>

int anotherFunc();
// 以下两个断言都会编译通过
static_assert(std::is_same_v<decltype(anotherFunc) const, decltype(anotherFunc)>>);
static_assert(std::is_same_v<decltype(anotherFunc) const&, decltype(anotherFunc)&>>);

这一结论和你观察到的汇编输出结果完全吻合。

问题2 对应的C++标准条款

该行为由C++标准的 [dcl.fct] 章节明确规定:

任何附加在函数类型上的cv限定符(const/volatile)都会被忽略。

C++本身不存在const修饰的函数类型,cv限定符仅对类的非静态成员函数有意义(用来限定成员函数调用时的this指针类型),对自由函数、函数指针、函数引用的基础函数类型附加const都是无效操作。


内容的提问来源于stack exchange,提问作者Anoop Rana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:03