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

咨询C++中“扩展方法”标准化提案位置及相关特性

C++扩展方法相关提案与术语说明

嘿,我刚好对这个话题有点了解,来给你梳理一下:

首先,你提到的这个和C#扩展方法类似、允许用成员语法调用非成员函数的特性,在C++提案里最常用的术语就是扩展方法(Extension Methods),部分提案也会用“成员式调用非成员函数”来描述,和你记忆的功能完全匹配。

关于标准化提案的情况:

  • 目前这个特性还没有正式纳入C标准(截至C23),但有几个核心提案一直在推进相关设计,其中最贴合你需求的是 P1169R0 "Extension Methods for C++"——这个提案直接对标C#的扩展方法,允许将全局或命名空间内的函数标记为扩展方法,从而支持像你示例里那样的f.Two()调用。
  • 更早的 P0447R2 "Extension Expressions" 是相关的早期尝试,不过它的设计更偏向表达式层面的扩展,和你想要的成员式调用逻辑略有区别。
  • 后续还有 P2086R1 "Allow invoking non-member functions as if they were members",进一步细化了非成员函数以成员语法调用的规则和场景。

举个更贴合提案写法的例子(以P1169为例):

class Foo { public: void One(); }; 
// 用extension关键字标记为Foo的扩展方法
extension void Two(Foo& f) {
    // 函数实现逻辑
}
int main() { 
    Foo f; 
    f.One(); // 常规成员函数调用
    f.Two(); // 合法的扩展方法调用
}

这些提案目前仍在标准化讨论流程中,后续可能会有设计调整,或者合并到其他更大的特性提案里。

内容的提问来源于stack exchange,提问作者void.pointer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:41:23