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

在C++20标准(N4860)中,哪部分规定内联函数需在TU中使用前定义?

关于C++20中内联函数定义时机的条款说明

在C++20标准(N4860)中,内联函数必须在翻译单元(TU)中被使用前完成定义的要求,由**[basic.def.odr]/4**条款规定。该条款的核心内容为:

对于内联函数或内联变量,在其被ODR使用的每个翻译单元中,对应的定义必须存在,且在该使用点之前或同一位置可见。

结合相关示例内容进一步说明:

  • 根据[dcl.constexpr]/1的规定,使用constexpr或consteval说明符声明的函数会被隐式视为内联函数。示例中的constexpr void square(int &x)就属于这类隐式内联函数。
  • 在定义constexpr pixel small(2)时,其构造函数中调用了square(x),但此时square仅存在声明、未完成定义,违反了[basic.def.odr]/4的要求,因此small(2)无法满足常量表达式的判定条件,触发编译错误。

内容的提问来源于stack exchange,提问作者John Kalane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:43:25