Rangeの勉強その2

翻訳の続き

2 関連情報とoverview


この提案は, すでに多くのcontextにおいてうまいこと使用されているBoost.Rangeをもとにしている. 例えば以下のライブラリはその基盤にBoost.Rangeを使用している.

* Boost.StringAlgo(1.32からBoostに仲間入りした)
* Boost.ForEach(Boostに受理された。しかしまだリリースには含まれていない)
* Adobe's Open Source Algorithm.

さらに, Boost.IOStreams, BoostPtrContainerそしてBoost.Assignなどといった他のBoostのライブラリでもRangeが使用されている.
先に述べたように, この提案はWalter Brownの論文n1674を取り入れている。


この提案に含まれるrange adaptorは

* n1640
* n1641

で述べられている新しいiterator adaptorライブラリで実装可能である. しかしこれは必要条件ではない.


すでにrange上で動く実装もJohn TorjoとMatthew Wilsonらによって作られている. 彼らのlibraryはここで見ることが出来る.

Iterable Range Library

また, いくつかの記事をCUJのトピックで見ることも出来る.


この提案は若干Boost.Rangeから逸れるが, 違いがある時にはそこを明示する.
この提案は4つのパートに分かれている.

* part1はコアとなる基盤について. これはあたらしいfor-loopでも必要になる.
* part2は新しい基盤の有効性を取り入れるための、既存のライブラリへのマイナーな拡張を提案する.
* part3はいくつかのシンプルなヘルパークラスについて検討する.
* part4はプログラミングを夢のようにする, 強力な(しかし依然としてシンプルな)range adaptor一式について.


誠に勝手ながら,この提案は2つのcore-languageの変更に依存している.

* n1794とn1705(auto/decltype)
* n1770(move-semantics)

これは, この提案の記述を大きく単純化させてくれる.


いくつかの他の提案がこの提案のcore機能に依存している.

* n1872(new string algorithms)
* n1868(new for-loop)

追記:part2の説明を修正