[boost-doc-zh] r347 committed - 校验更正,tuple中有文档错码

  • From: boost-doc-zh@xxxxxxxxxxxxxx
  • To: boost-doc-zh-notify@xxxxxxxxxxxxx
  • Date: Wed, 11 Nov 2009 10:00:28 +0000

Revision: 347
Author: alai04
Date: Wed Nov 11 01:59:47 2009
Log: 校验更正,tuple中有文档错码
http://code.google.com/p/boost-doc-zh/source/detail?r=347

Modified:
 /trunk/libs/tuple/doc/design_decisions_rationale.html

=======================================
--- /trunk/libs/tuple/doc/design_decisions_rationale.html Thu Sep 4 20:10:05 2008 +++ /trunk/libs/tuple/doc/design_decisions_rationale.html Wed Nov 11 01:59:47 2009
@@ -1,12 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
+<html><head>
   <meta content="text/html; charset=UTF-8" http-equiv="content-type">
-  <title>Design decisions rationale for Boost Tuple Library</title>
-</head>
-
-
-
+  <title>Design decisions rationale for Boost Tuple Library</title></head>

 <body bgcolor="#ffffff" text="#000000">

@@ -45,92 +40,33 @@

 <p>
有一番关于子命名空间::boost::tuples的讨论。不使用最自然的名称"tuple"的理由 是,避免和tuple模板有相同的名字。
-但是,在boost库中命名空间的名字很少被设计成复数的形式。
-首先,对命名空间和一个类用相同的名字,未曾有人反映有实质的麻烦。这样我们会 考虑把&ldquo;tuples&rdquo;改为&ldquo; -tuple&rdquo;。但是我们毕竟发现了一些麻烦。编译器 gcc 和 edg 都把这种命名空 间和类名字相同的情况看作编译错误。
-<code></code></p>
-<pre>namespace boost {<br> namespace tuple {<br> ... tie(...);<br> class tuple; <br>&nbsp; ...<br> }<br> using tuple::tie; // 可以<br> using tuple::tuple; // 错误<br> ...<br>}<br></pre>
-注意,如果用相应的从全局命名空间开始的表示法似乎能够编译通过:
-
-<code></code>
-<pre>using boost::tuple::tuple; // 可以<br></pre>
-
-
-
-<h2>部件链表(cons list)的结束符号 (nil, null_type, ...)</h2>
-
-
-<p>
-Tuple在内部表示为部件链表( <code>cons</code> list )::
-
-<code></code></p>
-<pre>tuple&lt;int, int&gt;<br></pre>
-
-继承: <code></code>
-<pre>cons&lt;int, cons&lt;int, null_type&gt; &gt;<br></pre>
-
-
-<code>null_type</code> 是链表的结束符号。 原来是主张使用符号 <code>nil </code><span style="font-family: monospace;">,</span>但是这个符号已经在 MacOS 中使用,这样可能导致一些问题,所以用 <code>null_type</code> 代替之。
-其他被考虑过的名字有 <i>null_t</i> 和 <i>unit</i> (SML语言中的空tuple名)。
-<p>
-注意 <code>null_type</code> 是空tuple的内部表示: <code>tuple&lt;&gt;</code> 继承 <code>null_type</code> &nbsp;。
-</p>
-
-
+但是,在boost库中命名空间的名字很少被设计成复数的形式。首先,对命名空间和一 个类用相同的名字,未曾有人反映有实际问题,我们也考虑过将名字 'tuples' 改 为 'tuple'。但是我们发现了一些麻烦。gcc 和 edg 编译器拒绝了名字空间与类名相 同的 using 声明:</p><pre><code>namespace boost {<br> namespace tuple {<br> ... tie(...);<br> class tuple; <br>&nbsp; ...<br> }<br> using tuple::tie; // ok<br> using tuple::tuple; // 错误 <br> ...<br>}<br></code></pre> +<p>不过请注意,在全局名字空间中的 using 声明则似乎是可以 的:</p><pre><code><br>using boost::tuple::tuple; // ok;<br></code></pre>
+<h2>部件链表(cons list)的结束标记 (nil, null_type, ...)</h2>
+<p>Tuples 的内部被表示为部件链表:</p><pre><code>tuple&lt;int, int&gt;<br></code></pre> +<p>派生自</p><pre><code>cons&lt;int, cons&lt;int, null_type&gt; &gt;<br></code></pre>
+<p><code>null_type</code> 是该链表的结束标记。原来用的是
+<code>nil</code>,但这个名字在MacOS中已被使用,有可能引发问题,所以用了 <code>null_type</code> 来替代它。其它被考虑过的名字还有
+<i>null_t</i> 和 <i>unit</i> (SML中的空tuple类型)。</p>
+<p>注意,<code>null_type</code> 是一个空
+tuple 的内部表示:<code>tuple&lt;&gt;</code> 派生自 <code>null_type</code>。</p>
 <h2>元素索引</h2>
-
-
-<p>
-使用0基址还是1基址的索引的选择问题,经过了透彻而深入的讨论。得出下面的观 点:
-
-</p>
-<ul>
-
- <li> 0-基址索引是 所谓的&ldquo; C++ 方法 &rdquo; ,用在数组等地方中。 </li>
-
- <li> 1-基址 如名字般直观 的索引也在很多地方存在, 例如, <code>bind1st</code>, <code>bind2nd</code>, <code>pair::first</code>, 等。 </li>
-
-</ul>
-
-Tuple 的访问语法 <code>get&lt;N&gt;(a)</code> 或者 <code>a.get&lt;N&gt;()</code> (其中<code>a</code> 是一个 tuple , <code>N</code> 是索引),被认为是第一个观点的范畴,因此,tuple中第一个元素的 索引是0 &nbsp; 。
-
-<p>
-有个建议希望tuple通过使用索引常量如 <code>_1st</code>, <code>_2nd</code>, <code>_3rd</code> &nbsp; ,来同时提供 1-基址的 如名字般直观 的索引&nbsp; 。 可以通过合适地选择索引常量,使下面的语法是等价的:
-
-<code></code></p>
-<pre>a.get&lt;0&gt;() == a.get(_1st) == a[_1st] == a(_1st);<br></pre>
-Tuple库决定不提供多于一种索引方法,因为下面理由:
-<ul>
-
- <li>0-基址 索引或许不能使所有的人满意,但是一旦固定下来,就不会在使用中被 两种不同方法搞糊涂(有人希望数组提供这样的索引常量吗?) 。</li>
-
- <li>增加另一中索引方法,并没有真正对库的使用者提供新的东西(如新的特性 )。</li>
-
- <li>C++ 变量和常量的命名规则并不提倡定义短而好用的常量(如 <code>_1st</code>, ...)。为了更好的目的,还是让 binding库和 lambda库使用。 </li>
-
- <li>访问语法 <code>a[_1st]</code> (或者 <code>a(_1st)</code>) 十分吸引 人,几乎使我们不顾一切增加索引常量。但是,0-基址下标方法已经在C++中根深蒂 固,以至于我们害怕陷入混乱。</li>
-
-  <li>
-这样的常量很容易增加。
-  </li>
-
-</ul>
-
-
-
-<h2>Tuple的比较运算</h2>
-
-
-比较操作符的实现是按照字典顺序方法。
-其他的排序方法也被考虑到,例如方法 (<i>a &lt; b iff for each i a(i) &lt; b(i)</i>)。 我们相信,字典顺序虽然不是数学上最自然一种,但是是日常编程中频繁 使用到的。
-
-<h2>串行化</h2>
-
-
-<p>在tuple串行化中的特殊字符存储在由ios_base::xalloc分配的空间中,它为 <code>long</code>类型对象分配空间。 -<code>static_cast</code> 用于<code>long</code>类型和特殊字符类型之间的转 换。 流中如有不能和long类型相互转换的字符,则不能通过编译。 这里可能需要修订 一些地方。 两种可能的解决方案是:
-</p>
-<ul>
+<p>使用从0起计还是从1起计的索引,这个问题被多次深入讨论,得出以下结论:</p>
+<ul><li>从0起计的索引是'C++方式',也是数组等结构所使用的方式。</li><li>从 1起计的索引也是有的,如 <code>bind1st</code>,
+<code>bind2nd</code>, <code>pair::first</code>, 等等。</li></ul>
+<p>Tuple 可通过语法 <code>get&lt;N&gt;(a)</code> 或
+<code>a.get&lt;N&gt;()</code> (其中 <code>a</code> 是一个 tuple,<code>N</code> 为索引)来访问,这被认为是第一类的,所以 tuple 中第一个 元素的索引应为0.</p>
+<p>曾经有过一个建议,用常数来提供从1起计的'类似名字'的索引,如
+<code>_1st</code>, <code>_2nd</code>, <code>_3rd</code>, ...。通过恰当地选 择常量类型,可以允许以下替代语法: </p><pre><code>a.get&lt;0&gt;() == a.get(_1st) == a[_1st] == a(_1st);<br></code></pre>
+<p>我们决定不提供一种以上的索引方法,原因如下:</p>
+<ul><li>从0起计的索引方式也许不能取悦所有人,但是一旦定下来,总是比两种不同 的方法共存更少混乱(有人会想对数组使用类似的常量吗?)。 +</li><li>增加一种索引机制并不能真正为该库的用户提供任何新的东西(如某种新特 性)。</li><li>C++的变量和常量命名规则并没有提供多少可能性,以定义较短的且好 用的索引常量(如 <code>_1st</code>, ...)。binding库和lambda库则是由于更好的目 的来使用它们的。</li><li>访问语法 <code>a[_1st]</code> (或 <code>a(_1st)</code>) 很有吸引力,几乎令我们为此增加了索引常数。不过,从0起 计的下标机制在C++中是如此深刻,我们很怕会引起混乱。</li><li>这样的常数很容易 添加。</li></ul>
+<h2>Tuple 比较</h2>
+<p>比较操作实现的是字典序。其它排序法也被考虑过,如主优势(<i>a &lt; b iff for each i a(i) &lt; +b(i)</i>)。我们的信念是,字典顺虽然不是数学上最自然的方式,但却是每天的编程 中最常需要的排序法。</p>
+<h2>流操作</h2>
+<p>由 tuple 流操纵子所指定的字符被保存在通过 <code>ios_base::xalloc</code> 分配得到的空间中,<code>ios_base::xalloc</code> 是为 long 类型对象分配空间 的。<code>static_cast</code> 被用于在 <code>long</code> 和流字符类型间的转 型。如果流的字符类型不能转换为 long 或不能从 long 转换,则编译失败。</p>
+<p>这一点可能会在某个时候重做。有两种可能的解决方法:</p><ul>

<li>只允许普通的char类型作为tule的分隔符,并用函数 <code>widen</code> ,<code>narrow</code>&nbsp; 去和真正的流字符之间进行转 换。这样总能通过编译,但是,一些设置函数调用得到的字符可能不是期望的那样(一 些默认字符)。</li>

@@ -143,7 +79,6 @@

 <a href="tuple_users_guide.html">返回到用户指引</a>
 <hr>
-<p>&copy; Copyright Jaakko J&auml;rvi 2001.
+<p>© Copyright Jaakko Järvi 2001.
 </p>
-</body>
-</html>
+</body></html>

Other related posts:

  • » [boost-doc-zh] r347 committed - 校验更正,tuple中有文档错码 - boost-doc-zh