実設計がアーキテクチャに引っ張られることはあっても、抽象的であるはずの概念がアーキテクチャに左右されるのはおかしい。
2011-03-09 02:37:59@PG_kura そのアーキテクチャの上で、ある概念を実装する場合、とてもコストが高くなる場合はありえます。そこまでして無理に実装しても誰も幸せにはならないと思うのです。
2011-03-09 02:39:22@fjnli 全くその通りだと思います。流れ把握してませんが、並列処理のためのいろいろな概念が形成されていくなかで、それらへの理解や実装が C++ のイテレータの仕様に引っ張られるべきではない、という意図ですた。
2011-03-09 02:42:54そうだよovenの凄いところはパイプでつないだ複数処理を合成関数にしちゃえるところだった。舐める処理が一回でいいんだ。元々のデータ構造がbegin(),end()をサポートしてる前提だとしたらぬるぽというだけで。
2011-03-09 02:58:44@kumagi_bot んあ、Random Access Rangeを要求するアダプタはないかも…。Random Access Rangeの方が効率的になるアダプタは沢山ありますが
2011-03-09 03:07:50OvenにRandom Access Rangeを要求するアダプタがあった気がしたけど、ドキュメント見る限りだとないなー…
2011-03-09 03:08:57@fjnli それってどういう事でしょう?データ構造の設計者が何も提供しなくても良い、という訳には行かないと思うんですが(現状の僕のgithubのhashmapのようなのが何も提供していない例)forward iteratorぐらいは提供できそうだなーといった所です。
2011-03-09 03:12:56@kumagi_bot たとえば、std::vectorの場合、vector::iteratorの型を使い、v.begin(), v.end()でイテレータを得るわけですが、この方法は型の定義に侵入しています。型の定義をいじらない限り、レンジとして使うことはできません。(続
2011-03-09 03:14:53@kumagi_bot でも、型をいじれないが、レンジとしてのセマンティクスを提供(できる|したい)場合はあります。その時に、型の外部からイテレータとbegin, endを得る手段を提供できます(非侵入的)。
2011-03-09 03:15:58@thimura 僕の場合はそれです。concurrentHashmapの提供するべきインタフェースとは何ぞや、というところが強いです。
2011-03-09 03:25:07@kumagi 元ネタは、でちまる先生のこれ(http://d.hatena.ne.jp/DigitalGhost/20100921/1285095799)です。 ->* が選択されているのは、優先度が最も高い二項演算子だからです。
2011-03-09 03:44:21