Skip to content

Commit bd654d0

Browse files
committed
HTMLタグについて、非推奨のname属性の代わりにid属性を使用するよう修正
1 parent 9a28516 commit bd654d0

File tree

162 files changed

+1677
-1677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

162 files changed

+1677
-1677
lines changed

archive/boost_docs/document/generic_programming.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
- [ポリシークラス(Policy Classes)](#policy-classes)
1717

1818

19-
## <a name="introduction" href="#introduction">はじめに(Introduction)</a>
19+
## <a id="introduction" href="#introduction">はじめに(Introduction)</a>
2020
ジェネリックプログラミングはソフトウェアコンポーネントに汎用化に関するものであり、 これによりコンポーネントを多様な状況で容易に再利用することが出来る。 C++ ではクラステンプレートと関数テンプレートがジェネリックプログラミング技術に対して特に効果的である。 なぜなら、これらは効率を犠牲にすることなく汎用化を可能にするからである。
2121

2222
ジェネリックプログラミングの簡単な例として、C 標準ライブラリの `memcpy()` 関数をどのように汎用化するか見てみよう。 `memcpy()` の実装は次のようになっている。
@@ -73,7 +73,7 @@ int main()
7373
}
7474
```
7575

76-
## <a name="the-anatomy-of-a-concept" href="#the-anatomy-of-a-concept">コンセプトの分析(The Anatomy of a Concept)</a>
76+
## <a id="the-anatomy-of-a-concept" href="#the-anatomy-of-a-concept">コンセプトの分析(The Anatomy of a Concept)</a>
7777
**コンセプト** は要求の集合であり、要求は有効な式、関連型、不変量、 そして計算量の保証から出来ている。要求の集合を満たす型は、コンセプトの モデル と言われる。 コンセプトは他のコンセプトの要求を拡張することが可能であり、これは **発展型(refinement)** と呼ばれる。
7878

7979
- **有効な式** とは、 コンセプトの *モデル* とみなされる式に関わるオブジェクトに対して、 コンパイルが成功しなければならない C++ の式である。
@@ -84,7 +84,7 @@ int main()
8484
C++ 標準ライブラリで使われているコンセプトは [SGI STL site](http://www.sgi.com/tech/stl/table_of_contents.html) で文書化されている。
8585

8686

87-
## <a name="traits" href="#traits">特性クラス(Traits)</a>
87+
## <a id="traits" href="#traits">特性クラス(Traits)</a>
8888
特性クラスは、コンパイル時の実体(型、汎整数定数、アドレス)に情報を関連付ける手段を提供する。例えば、クラステンプレート`std::iterator_traits<T>` は次のようになっている:
8989

9090
```cpp
@@ -105,7 +105,7 @@ struct iterator_traits {
105105
`std::iterator_traits` についての詳細な記述は、 SGI が提供している [このページ](http://www.sgi.com/tech/stl/iterator_traits.html) を見よ。 標準ライブラリでの、大きく異なる別の特性の式は `std::numeric_limits<T>` である。これは、 数値型の範囲と能力を記述する定数を提供している。
106106
107107
108-
## <a name="tag-dispatching" href="#tag-dispatching">タグ分岐(Tag Dispatching)</a>
108+
## <a id="tag-dispatching" href="#tag-dispatching">タグ分岐(Tag Dispatching)</a>
109109
特性クラスと同時に使われることが多い技術に、タグ分岐がある。 これは、型の性質に基づいて分岐するために、関数オーバーロードを使う方法である。 これについてのよい例は、C++ 標準ライブラリの [`std::advance()`](http://www.sgi.com/tech/stl/advance.html) 関数である。 これは、イテレータを `n` 回インクリメントする。 イテレータの種類によって、実装の中では適用される、異なる最適化がある。 もしイテレータが [random access](http://www.sgi.com/tech/stl/RandomAccessIterator.html) (前方、後方に任意の距離、ジャンプすることが可能である) なら、 `advance()` 関数は単に `i += n` で実装され、これは非常に効率的、つまり定数時間である。 他のイテレータでは、 ステップ数が **上昇** し、演算は `n` に対する線形時間になる。 もしイテレータが、 [双方向](http://www.sgi.com/tech/stl/BidirectionalIterator.html) なら、 `n` が負であっても良いので、 イテレータをインクリメントするかデクリメントするか選ばなければならない。
110110
111111
タグ分岐と特性クラスの関係は、分岐に使われる性質(この場合では `iterator_category`) が特性クラスによってアクセスされることが多い、ということである。 主たる `advance()` 関数は `iterator_category` を得るために [`iterator_traits`](http://www.sgi.com/tech/stl/iterator_traits.html) クラスを使う。 それから、オーバーロードされた `advance_dispatch()` 関数を呼び出すのである。 `iterator_category` をどんな型に解決するかに基づいて、 コンパイラにより、 [`input_iterator_tag`](http://www.sgi.com/tech/stl/input_iterator_tag.html) か [`bidirectional_iterator_tag`](http://www.sgi.com/tech/stl/bidirectional_iterator_tag.html) か [`random_access_iterator_tag`](http://www.sgi.com/tech/stl/random_access_iterator_tag.html) の中から適した `advance_dispatch()` が選ばれるのである。 **タグ** はタグ分岐や、似たような技術で使うための性質を伝える、 という目的だけを持つ単純なクラスである。 イテレータタグのより詳細な記述については、[このページ](http://www.sgi.com/tech/stl/iterator_tags.html) を参照すること。
@@ -147,13 +147,13 @@ namespace std {
147147
```
148148

149149

150-
## <a name="adaptors" href="#adaptors">アダプタ(Adaptors)</a>
150+
## <a id="adaptors" href="#adaptors">アダプタ(Adaptors)</a>
151151
*アダプタ* は別の型や、新しいインタフェース、振る舞いの変種を提供する型を構築する、 クラステンプレートである。 標準のアダプタの例は、 [`std::reverse_iterator`](http://www.sgi.com/tech/stl/ReverseIterator.html) にある。これは、インクリメント、デクリメントに対しその動きを逆転させる、イテレータ型に対するアダプタである。 [`std::stack`](http://www.sgi.com/tech/stl/stack.html) は単純なスタックインタフェースを提供するコンテナに対するアダプタである。
152152

153153
標準でのアダプタについての、より解りやすいレビューは [ここ](http://www.cs.rpi.edu/~wiseb/xrds/ovp2-3b.html#SECTION00015000000000000000) にある。
154154

155155

156-
## <a name="type-generators" href="#type-generators">型生成器(Type Generators)</a>
156+
## <a id="type-generators" href="#type-generators">型生成器(Type Generators)</a>
157157
*型生成器* はテンプレート引数 [^1] に基づいて新しい型を合成することだけが目的のテンプレートである。 生成された型は通常、ネストされた `typedef` として表現され、いかにもふさわしく `type` と命名される。 型生成は通常、複雑な型表現をひとつの型に統合するために使われる。例えば、 `boost::filter_iterator_generator` では、次のようになっている:
158158

159159
```cpp
@@ -178,7 +178,7 @@ boost::filter_iterator_generator<my_predicate,my_base_iterator>::type
178178
```
179179

180180

181-
## <a name="object-generators" href="#object-generators">オブジェクト生成器(Object Generators)</a>
181+
## <a id="object-generators" href="#object-generators">オブジェクト生成器(Object Generators)</a>
182182
*オブジェクト生成器* は関数テンプレートであり、唯一の目的は、 引数から新しいオブジェクトを構築することである。 汎用コンストラクタの一種として考えることが出来るだろう。 オブジェクト生成器は、生成される実際の型を表現するのが難しかったり、出来なかったりするときに、 単なるコンストラクタよりも役立つだろう。 そして生成器の結果は変数に格納するのではなく、直接関数に渡すことも出来る。 多くの Boost オブジェクト生成器は接頭辞 "`make_`" がつけられている。 これは、`std::make_pair(const T&, constU&)` に倣ってのことである。
183183

184184
たとえば、次のようなものを考えてみる:
@@ -214,7 +214,7 @@ void tweak_all_widgets2(int arg)
214214
表現がより複雑になるにつれて、型指定の冗長性を減らす必要性はどうしても大きくなるのである。
215215
216216
217-
## <a name="policy-classes" href="#policy-classes">ポリシークラス(Policy Classes)</a>
217+
## <a id="policy-classes" href="#policy-classes">ポリシークラス(Policy Classes)</a>
218218
ポリシークラスは振る舞いを伝達するために使われるテンプレート引数である。 標準ライブラリからの例は `std::allocator` である。これは、メモリ管理の振る舞いを標準の containers に伝える。
219219
220220
ポリシークラスは Andrei Alexandrescu によって、 [この文書](http://www.cs.ualberta.ca/~hoover/cmput401/XP-Notes/xp-conf/Papers/7_3_Alexandrescu.pdf) の中で詳しく探求されている。彼は次のように書いている:

archive/boost_docs/libs/array/array.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
- [コード例](#code)
88

99

10-
## <a name="introduction" href="#introduction">はじめに</a>
10+
## <a id="introduction" href="#introduction">はじめに</a>
1111
C++ 標準ライブラリの一部である C++ 標準テンプレートライブラリ STL は、さまざまな種類のコンテナに対してアルゴリズムを適用するためのフレームワークを提供している。しかしながら、通常の配列は STL コンテナのインターフェイスには備わっていない(STL コンテナのイテレータとしてのインターフェイスは用意されているけれども)。
1212

1313
通常の配列を置き換えるものとして、STL では `vector<>`が提供されているが、`vector<>` は動的配列のセマンティクスを持つので、要素数が変化する可能性を持つデータを管理対象とする。静的なサイズさえあれば充分な場面では、このことはいくぶんかのオーバーヘッドを生じさせることとなる。
@@ -17,7 +17,7 @@ Matthew H. Austern は彼の本、 *Generic Programming and the STL* の中で
1717
いろいろな名前を考えたすえ、このクラスの名前はシンプルに **array** と決定した。
1818

1919

20-
## <a name="interface" href="#interface">インタフェース</a>
20+
## <a id="interface" href="#interface">インタフェース</a>
2121
このクラスは以下のインターフェイスを提供する。
2222

2323
**型:**
@@ -65,7 +65,7 @@ Matthew H. Austern は彼の本、 *Generic Programming and the STL* の中で
6565
| `static_size` | コンパイル時の要素数 |
6666

6767

68-
## <a name="discussion" href="#discussion">議論</a>
68+
## <a id="discussion" href="#discussion">議論</a>
6969
`array` クラスは"reversible container"(C++ 標準 Section 23.1, [lib.container.requirements] を参照)の要件のほとんどを満たしているが、完全にではない。`array` が reversible な STL コンテナではない理由は以下のとおりである。
7070

7171
- 提供されるべきコンストラクタがない
@@ -104,7 +104,7 @@ Matthew H. Austern は彼の本、 *Generic Programming and the STL* の中で
104104
建設的な[フィードバック](mailto:[email protected])はどのようなものでも歓迎する。**注意してほしいのは、boostメーリングリストのすべてのメールを読むだけの時間が、私にはないという点だ。というわけで、確実にフィードバックが私に届くようにするため、このクラスに関するメールについては、私にコピーを送ってほしい。**
105105

106106

107-
## <a name="code" href="#code">コード例</a>
107+
## <a id="code" href="#code">コード例</a>
108108
以下のコードは「このままの形(as is)」で提供され、明示的あるいは暗黙的な保証はない。
109109

110110
- [**array.hpp**](array.hpp.md), `array<>` の実装ファイル

0 commit comments

Comments
 (0)