"structured bindings"与"decomposition declarations"
"structured bindings" vs "decomposition declarations"
观察:
- 在P0217R3提案(2016-06-24)中,使用了结构化绑定术语。
- 在当前的工作C++1z草案(2016-11-28)中,使用了分解声明术语。
- 在P0615R0提案 (2017-03-01) 中,分解声明已重命名为结构化绑定。
- 引人注目的是,这篇博文(2017-01-09)包含以下文字:
分解声明。[..]最初称为"结构化绑定"。
- 同样,这个问题(2017-03-04)包含以下文本:
[..]C++17 分解声明(以前称为"结构化绑定"的功能)。
问题:
- 这两个中哪一个是我们应该使用的正确和最新的术语?
- 为什么同一个概念有两个名字?
- 如果分解声明真的重命名为结构化绑定,原因是什么?
新的正确名称将是"结构化绑定声明",基于 P0615 中的措辞。基本上,在:
auto [x,y] = Point(4,2);
完整的语句称为"结构化绑定声明",而标识符x
和y
称为"结构化绑定"。这些将是C++17中的官方条款。事实上,最新的草案部分现在的标题是结构化约束声明。
问题是有两个概念,需要两个不同的名称——所以最初的措辞文件在声明声明中使用了分解声明(术语"结构化绑定"根本没有出现在措辞中)。但是,对于大多数用户来说,这是愚蠢的,因为只有一个概念 - 结构化绑定 - 因此使用两个不同的名称更难学习。如果编译器错误消息在其消息中使用"分解声明",则尤其令人困惑。无论使用术语"分解声明",功能的名称始终是结构化绑定。
在科纳,EWG决定坚持这两个名字,但至少让它们听起来密切相关。
相关文章:
- 更新了Runge-Kutta(RK4)C++错误代码中的二阶DE
- de if-Block 是什么意思
- "structured bindings"与"decomposition declarations"
- 从相同纹理的撰写和读取OpenGL上的迭代de Solver
- 级运算符 ( "C++ requires a type specifier for all declarations" )
- 柯尼希查找和"C++ requires a type specifier for all declarations"
- 堆上的多线程(DE)分配
- 如何便移(de)序列化qint32
- (De/)序列化作为C++中基于文件的数据交换的接口
- 尝试在 eclipse CDT 中提取函数时"Too many declarations in selection"错误消息
- C++ (de) 序列化项的向量顺序
- 如何跟踪LLVM验证功能错误"Expected no forward declarations!"?
- 错误"C++ requires a type specifier for all declarations"
- Throw Declarations
- Class declarations
- 不赞成使用访问声明,而是使用-declarations;建议:添加“using”关键字
- 升压DE-9-IM结构是否可用
- auto_ptr and forward declarations
- 如何使用 def 文件在 de dll 中使用 mfc
- 内存[de]分配的成本和潜在的编译器优化(c++)