C++的下一个版本是否有可能具有Microsoft的属性扩展?
Is there any chance that the next version of C++ will have Microsoft's property extension?
http://msdn.microsoft.com/en-us/library/es7h5kch.aspx
这个功能看起来很不错。这将是伟大的,因为你将不再需要getter了。您可以公开成员变量;以后,如果你改变主意,你可以把它们变成财产。
这是标准委员会考虑过的吗?这是他们可能接受或拒绝的东西吗?这是不是已经存在了,而我只是还不知道?
由于这在标准兼容的C++中已经可以使用纯库方法(代理对象),因此不太可能看到语言更改和新的关键字。与lambdas(例如)不同,这里可能的语法糖并没有那么甜(抽象级别没有太大变化)。
顺便说一句,将字段(无包装成员变量)更改为属性总是一个突破性的更改,因为您可以形成对字段的指针和引用,并直接读取/写入它们。对于属性,您需要一个包装器来确保使用getter和setter。
Microsoft扩展的原因是它没有在C++代码中简单地提供属性(对getter和setter函数的读写拦截)。它生成反射使用的.NET元数据或WinRT元数据(分别在C++/CLI和C++/CX中)。标准C++没有反射或元数据。
还要注意,C++开发人员往往不太使用代理对象模式,这向委员会表明,对"更干净"的语法糖也没有太多需求。
这是旧的。Borland第一次添加它是在90年代,如果我没有错的话,是用C++Builder添加的。微软紧随其后,他们当时竞争激烈。COM自动化是一个很大的动力。
考虑到这有三个C++语言版本需要处理,再加上围绕它的争议,在未来的修订中考虑这一点的可能性微乎其微。
属性有其用途,但它们会造成相当大的实施困难。例如,通过引用传递属性是一个很难解决的问题。被调用者需要知道需要调用访问器,而不仅仅是取消引用指针,还需要知道是否存在getter或setter。唯一实用的解决方案是禁止它,这在C++中并不完全有吸引力。当您开始支持默认属性时,会出现额外的问题,这很难忽略,从而引入语法歧义。
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- MSVC是否支持C++11样式的属性而不是__declspec
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 用概念检查属性的类型
- C++如何将同一类的实例作为属性
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 按多个属性排序
- 主函数参数的属性
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- C++删除未使用的类属性会导致 std::logic_error
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- 使用内存地址访问结构的属性值
- 带有 CKKS 的 Microsoft 密封中的矢量点积
- C++调用具有 *this 属性的单个帮助程序函数
- C++的下一个版本是否有可能具有Microsoft的属性扩展?