"结构化绑定" vs"分解声明"

时间:2017-05-11 06:23:06

标签: c++ c++17

观察:

  

分解声明。 [..]最初被称为"结构化绑定"。

  

[..] C ++ 17分解声明(此功能以前称为"结构化绑定")。

问题:

  • 这两个中哪一个是我们应该使用的正确和最新术语?
  • 为什么同一个概念有两个名字?
  • 如果分解声明真的被重命名为结构化绑定,那么原因是什么?

1 个答案:

答案 0 :(得分:11)

新的正确名称将是"结构化绑定声明",基于P0615中的措辞。基本上,在:

auto [x,y] = Point(4,2);

完整声明称为"结构化绑定声明",而标识符xy称为"结构化绑定"。这些将是C ++ 17中的官方术语。实际上,最新的草案部分现在标题为Structured Binding Declarations

问题在于有两个概念,需要两个不同的名称 - 所以原始的措辞文件使用了声明声明的分解声明(术语"结构化绑定"根本没有出现在措辞中)。然而,对于大多数用户来说,这是愚蠢的,因为只有一个概念 - 结构化绑定 - 所以有两个不同的名称更难学。如果使用编译器错误消息"分解声明"特别令人困惑。在他们的消息中。无论使用术语"分解声明,"该功能的名称一直是结构化绑定。

在Kona,EWG决定坚持这两个名字,但至少让它们听起来密切相关。