为什么C++不支持命名参数

Job*_*bin 18 c++ named-parameters

以前,我使用过python.在Python中,我使用命名参数(关键字参数)进行函数调用.关于命名参数的维基百科页面告诉我C++不支持它.为什么C++不支持命名参数?它是否支持未来版本的C++标准?

eer*_*ika 24

为什么C++不支持命名参数

因为此类功能尚未引入标准.这个特性在C中也没有(也没有),这就是C++最初的基础.

它是否支持未来版本的C++标准?

也许.已经为它编写了一份提案.这取决于该提案是否被纳入标准.

  • 我喜欢这个功能,它使代码清晰,在 c++17 中仍然没有这样的功能 (5认同)
  • @Andrew`它们是真正的命名参数`不,它们不是。它们实际上是成员变量。“这非常方便” 虽然这是事实,但这并不会使它们成为命名参数。“这服务于命名参数的总体目的和功能。”只是其中的一部分。您可以使用单个类参数使您自己的函数模拟命名参数,但这不允许您将命名参数传递给未以这种方式声明的函数。 (4认同)
  • 以下是[本页](http://cplusplus.github.io/EWG/ewg-closed.html#150)对该提案的说法:`在Urbana中讨论过.EWG发现了提出的方法存在各种问题,并且认为尝试解决问题并不可行,因为它已经多次尝试并且每次都失败了. (3认同)
  • 我不明白为什么这应该像帖子声称的那样“向后不兼容”。像 OP 的 `foo(x=42, b=42);` 这样的代码可能会被编译器拒绝为“未找到匹配的签名”,而不会影响现有代码,不是吗? (2认同)