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

C++中仅为单个下划线的用户自定义字面量(UDL)后缀是否符合标准?

结论:该写法属于未定义行为,C++标准不允许使用单个下划线作为用户自定义字面量(UDL)后缀

首先明确两个相关标准条款的适用边界:

17.6.4.3.2 [global.names]:全局命名空间中所有以下划线开头的名称均为实现保留名称。
17.6.4.3.5 [usrlit.suffix]:不以下划线开头的字面量后缀标识符保留给未来标准化使用。

  • [usrlit.suffix]的规则仅豁免了「下划线开头的UDL后缀被标准预留」的限制,即用户自定义的UDL后缀必须以下划线开头才不会和未来标准新增的后缀冲突,但该条款没有豁免全局命名空间的标识符保留规则。
  • 单个下划线_本身属于全局命名空间中被实现保留的标识符,完全符合[global.names]的约束条件,没有被UDL相关规则排除在外。
  • 合法的用户自定义UDL后缀必须满足「下划线 + 至少一个其他合法标识符字符」的格式,例如_dim、_px这类后缀才是标准允许的写法。

问题中给出的代码:

constexpr Dimensionless operator"" _(...) {}

以及对应的用法42_都违反了标识符保留规则,属于未定义行为,不建议在生产代码中使用。

内容的提问来源于stack exchange,提问作者David Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:06:03