range-based for の変更案

11
普通のC++使い、銀天すばる @SubaruG

観てる: 本の虫: range-based forに対する意見求む http://t.co/MWL1XOg

2011-02-27 20:52:12
普通のC++使い、銀天すばる @SubaruG

ADLは明らかに邪悪だし、メンバ関数を使うのがいいかもしれんにゃー。

2011-02-27 20:53:30
普通のC++使い、銀天すばる @SubaruG

ただ、その場合は配列の扱いをどうするかを考える必要がある。規格で配列は例外のルールを作るべきか、それとも標準ライブラリにアダプタを用意するか、ですね。

2011-02-27 20:55:22
プププランドのプリンス RiSK @sscrisk

案4はユーザにとっても言語にとってもとてもシンプルだと思う。でも,アダプタを書くだけで本当に全てのケースに対応できるのか分からない。(他の案もそういう意味では分からないんだけど)

2011-02-27 20:56:53
隅須正昭 @nagoya313

ADLが邪悪ってのは、よく分からん衝突がうざいからってことでいいのかね

2011-02-27 20:58:03
隅須正昭 @nagoya313

まぁルックアップとかたまに物凄く分かりにくい邪悪な例とかあるしなぁ。

2011-02-27 20:59:36
総長 Liand博士 @krustf

range-based forの記事は風呂入ってから読む。

2011-02-27 21:00:49
くっくっkura 🇯🇵 @PG_kura

range-based for の記事、興味深い。

2011-02-27 21:01:21
プププランドのプリンス RiSK @sscrisk

確かに… RT: @SubaruG: ただ、その場合は配列の扱いをどうするかを考える必要がある。規格で配列は例外のルールを作るべきか、それとも標準ライブラリにアダプタを用意するか、ですね。

2011-02-27 21:03:13
プププランドのプリンス RiSK @sscrisk

アダプタを用意したらそれは std::array になっちゃうし,生配列のメリットが無くなる気もする。

2011-02-27 21:04:25
プププランドのプリンス RiSK @sscrisk

シンプルイズベストの原則に従い案4を推す。しかし,配列はどうなるのか謎。

2011-02-27 21:07:18
おしょー@実際モチベーションがない @manga_osyo

うーん、range-based for はなかなか興味深いにゃー。ライトなC++er だとやっぱり案1が一番理解しやすいのかにゃー。

2011-02-27 21:07:37
くっくっkura 🇯🇵 @PG_kura

既存コードが ADL ありきで動いている以上、ADL のサポートを将来外すという選択はそもそも採れない..んじゃないかな。

2011-02-27 21:08:07
Usagi Ito 👩‍💻 High-tech Hermit 🧙‍♀️ @usagi_network

本の虫: range-based forに対する意見求む http://t.co/RL0g0tG ← 案4がいいに賛同。ADLの邪悪はさておくにしても、簡潔で明瞭で使い易く、また他の案に対して言語仕様の学習コストも考慮するにデメリットもない

2011-02-27 21:08:42
ロイン @lowwin_bzn

range based forはAdaptorが一番しっくりくるなぁ

2011-02-27 21:09:16
くっくっkura 🇯🇵 @PG_kura

あー、違うか。range-based for に限定して ADL を外す可能性が残っているということか。

2011-02-27 21:11:03
にゃははー仙人 @Flast_RO

range based forからADLを消したところで結局ADLは残ってるわけだし案1かfall-backはあっていいと思うんだけどな

2011-02-27 21:12:11
普通のC++使い、銀天すばる @SubaruG

あ、ちなみに現行では、 <iterator> に配列に対して特殊化された begin, end が定義されてます。

2011-02-27 21:14:19
にゃははー仙人 @Flast_RO

メンバはなぁ・・・ やっぱりrangeっていうものを明確した上でrequirementsを書かないと

2011-02-27 21:14:51
にゃははー仙人 @Flast_RO

多分現状is_iterator<T>メタ関数を書くとしたらstd::iterator_traits<T>::iterator_tagが定義されてるかってことだろうけどis_range<T>を書くとしたら・・・ってなってしまうのが良くない

2011-02-27 21:16:23
総長 Liand博士 @krustf

確かにADLはこの場合邪魔でしかない気がするので案4が良いかなあ、とは思った。個人的には案2が良い気もしたけどSTLテンプレートの特殊化はなあ。

2011-02-27 21:17:50
普通のC++使い、銀天すばる @SubaruG

ちなみに現行の規格において <iterator> に定義された、コンテナに対する begin, end は、 perfect forward を使った template<class T> some_type begin( T&& x ); がある場合、そちらが優先される筈。

2011-02-27 21:18:33
おしょー@実際モチベーションがない @manga_osyo

しかし、ユーザ側に選択肢を増やすのもなんかあれな気がする。複数定義した場合に混乱しやすいし。ぐぬぬ……。

2011-02-27 21:19:08
残りを読む(81)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?