有没有建议对c++语言进行扩展,以消除痘痘

Is there a proposal to extend the C++ language so as to obviate pimpl?

本文关键字:扩展 c++ 语言 有没有      更新时间:2023-10-16

有时,您希望提供一个类声明,它不仅是一个不透明的前向声明,而且还公开了公共功能—但是您不想提交您的私有或特定于实现的字段和方法。对此的一个解决方案是pimpl习惯用法——使用指向内部类的指针,其中包含公开暴露的类的实现。

我真的不喜欢使用pimpl,希望语言允许你拥有真正的私有成员——这样使用类的代码就不会"看到"它们的声明(因此可能不需要在实现细节改变时重新编译)。而且,最近,我注意到c++的发展速度要快得多——标准更新的周期是3年。所以…有没有建议在c++中添加这样的功能?一些编译器目前支持它吗?

是的,存在这样的提议。甚至有几个以前的版本,最新的是去年的:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf

该提案将允许operator.过载,列出几个用例:

    智能引用
  • 智能指针类工作
  • 界面改进
  • Pimpl

您可以阅读链接的提案以获取更多信息。当然,这并不一定会被接受,即使它被接受,它也可能不会被纳入c++ 17。