首页 > 解决方案 > 什么是“托尼桌”?

问题描述

以下句子摘自GitHub 页面

前/后表(“托尼表”)中描述的 C++20 功能

  1. C++ 文化中的托尼表是什么?

  2. 为什么它们用来表示之前/之后的表格

标签: c++

解决方案


在某种程度上,托尼桌是“只是”在桌子之前/之后。展示没有特定功能或特性的代码是什么样的,并展示带有该特性的代码是什么样的。

它们最初用于此 C++ 提案:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf (请参阅附录)以更清楚地说明论文的哪些变化正在提议。(在清晰性方面比较提案的 R2 版本和 R3 版本。)

经过一番催促和耐心,委员会发现使用表格可以提高对提案的理解并加快委员会进程

表格的目标不仅仅是显示之前/之后。真正的“托尼桌”还应该:

  • 显示动机:示例代码不应该只显示语法,它应该显示激励代码,真实的代码,清楚地表明该功能值得做
  • 显示所有重要的语法:该表应该有足够的示例来涵盖该功能的几乎所有语法(不是全部 - 它可以跳过任何明显的东西,比如复制 ctor -如果在这种情况下很明显- 但应该涵盖任何值得一看的东西)
  • 对齐行:任何前后相同的行都应该对齐 - 根据需要添加空行。它应该看起来有点像差异。

真正的目标是成为“一站式商店”,而不是传统委员会文件中的众多章节(参见http://open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3370.html #Organization了解传统论文的组织方式)。

过去,动机部分过于冗长,技术规范部分过于密集。我们仍然需要这些部分,但是大部分论文应该可以从表格中找到(这就是表格从附录移到大多数论文前面的原因)。

几乎每篇委员会论文的目标都是改变 C++ 代码的编写方式,因此展示实际代码将如何改变可以使过程更加清晰。

在委员会之外,这些表格已被用于描述新功能(请参阅https://github.com/tvaneerd/cpp17_in_TTs了解 C++17 over C++14,并为https://github.com/制作 PR tvaneerd/cpp20_in_TTs因为 C++20 非常庞大!)。

没有真正的理由称它们为“Tony Tables”(我认为 David Sankel 是第一个这样称呼它们的人)。它们是之前/之后的表。除了“之前/之后”的狭义定义之外,“Tony Table”一词所具有的唯一“附加值”是捕捉该表预期内容的完整概念。

PS for C++23 它们开始被 Pony Stables 取代。https://isocpp.org/files/papers/D2349R0.html


推荐阅读