【新機能】作り忘れたまとめはありませんか?31日前まで期間指定してまとめが作れる高度な検索ができました。有料APIだからツイートの漏れはありません!

トリから始まるnon-intrusiveness談義

最初のURLはトリ警報が出ているので注意してください。
1303view 0コメント
3
ログインして広告を非表示にする
超電磁ねこきっく @finalfusion 2010-07-05 23:05:32
"やっぱり、テンプレートは面白い! 全言語でテンプレートを導入してほしいぐらいです。" http://indori.blog32.fc2.com/blog-entry-1050.html
SKSの申し子 @repeatedly 2010-07-05 23:11:52
全ての言語にテンプレートがあってどうするんだろう.たとえばPHPにテンプレートを入れたとして,どう使う? http://indori.blog32.fc2.com/blog-entry-1050.html
SKSの申し子 @repeatedly 2010-07-05 23:13:31
templateの非侵食的がいまいちイメージが沸かない.何に対して非侵食的?
Akso de la Malbono @Cryolite 2010-07-05 23:18:02
@repeatedly 「非侵食的」というのが C++ の総称プログラミングでいうところの "non-intrusiveness" の訳語なら,これは「大元の型定義に対して非侵食的」あたりの感覚が適するのではないかと.あくまで個人的な理解では,ですけれど.
Akso de la Malbono @Cryolite 2010-07-05 23:20:09
http://shinh.skr.jp/h/?DuckTyping にある "intrusive" の記述が, C++ の総称プログラミングでいうところの「侵食的」の意味として自分が理解しているもの.
SKSの申し子 @repeatedly 2010-07-05 23:21:41
@Cryolite つまり「型を特定せずに抽象化して書ける」つまり「任意の型を扱える」ってくらいの解釈でいいんですかね.
鯉江 @koie 2010-07-05 23:24:59
Tの連想配列をつくるのにmap<T>と書くだけでよくてTをいじらなくてよいということかと。カーネルだと効率重視で侵食的なリストを多用します。 RT @repeatedly: templateの非侵食的がいまいちイメージが沸かない.何に対して非侵食的?
Akso de la Malbono @Cryolite 2010-07-05 23:25:41
@repeatedly う~んと,「A は B ですよ」という記述を A の大元の定義に一切触れずにできる (従って,たとえば「A は B ですよ」という記述を A の定義後に後付けできる) というのが私の理解です.
SKSの申し子 @repeatedly 2010-07-05 23:27:35
@koie それってTが構造体とかだった場合,特別なメンバ関数とか必要になりません?
SKSの申し子 @repeatedly 2010-07-05 23:28:40
@Cryolite あーそれはなんか分かり易いです
Akso de la Malbono @Cryolite 2010-07-05 23:30:00
@koie map<T> の例で言えば, T が map に乗るためには T には比較演算が定義されていないといけない (T は LessThanComparable である,としなければならない) ですが,これを (比較演算を定義することが妥当であれば) T に後付けできます.
でちまるさん(実際かわいい) @decimalbloat 2010-07-05 23:38:07
struct foo; をRangeとして扱いたい!!!→ここで、1. fooの定義を修正しないとRangeにならない→侵入的 2. fooの定義を修正しなくても、どっか適当にほげほげとふがふがを書き足せばfooをRangeとして扱える→非侵入的 という理解
SKSの申し子 @repeatedly 2010-07-05 23:38:50
前intrusive_ptr辺りをTwitterで話した時は,これ自体はクラス弄らなくても外部にADLとか使って外部で関数を定義しても使えるので非侵入的というのを教えてもらった.でもこれはtemplateだけの力じゃなくてADLあっての力な気もする.
SKSの申し子 @repeatedly 2010-07-05 23:39:39
外部を二回書いてしまった
鯉江 @koie 2010-07-05 23:40:29
. @Cryolite @repeatedly それは見落としてましたが、map<T,comparator>と比較関数を指定すればにげられます。Tの比較にprivateアクセスが必要だったらダメですけど。
隅須正昭 @nagoya313 2010-07-05 23:43:54
ADL~~~~~~~~~~~~~~っ!!!
Akso de la Malbono @Cryolite 2010-07-05 23:44:46
@repeatedly ADL は C++ で non-intrusiveness という最重要課題の1つを達成するための必要不可欠な構成要素だと認識しています.クラスの associated namespace がクラスの open な定義場所として機能しているからですけれど.
Akso de la Malbono @Cryolite 2010-07-05 23:46:54
@koie その comparator を定義しさえすれば (T の定義に一切触れずに) T が map に乗せられるというのがまさに non-intrusiveness の体現ですね.
SKSの申し子 @repeatedly 2010-07-05 23:48:40
@Cryolite その辺も兼ねて非侵入的を考えると納得なのですが,「テンプレートのような非侵食(入)的」というのはテンプレートだけだとどうなのかなぁというのが(特にD言語とかの場合はADLとかないですから)
Akso de la Malbono @Cryolite 2010-07-05 23:55:34
@repeatedly あぁ, D について詳しくないので違うかもしれませんが,少なくとも C++ では template だけで non-intrusiveness を達成することはできますよ. C++ の template には (部分) 特殊化があるので,これを駆使すれば.
Akso de la Malbono @Cryolite 2010-07-05 23:57:19
@repeatedly 実際, ADL でやるべきなのか specialization でやるべきなのかは一時期どこかで議論になりました.この対立軸はそのまま「関数のオーバーロード vs. 特殊化」の対立軸になると思います.
SKSの申し子 @repeatedly 2010-07-05 23:58:09
@Cryolite あー,特殊化がありましたね.
Akso de la Malbono @Cryolite 2010-07-05 23:59:52
@repeatedly 「ADL vs. 特殊化」の議論では,「ADL はヤヴァイので特殊化でやるべき」という主張もありましたが,特殊化のほうは特殊化のほうで「基底クラスについて特殊化しても派生クラスについてもう1度特殊化しないといけない」とか,
残りを読む(8)
あなたのツイートをまとめませんか? ツイートを集めてブログみたいに使おう。

ブックマークしたタグ

あなたの好きなタグをブックマークしておこう!話題のまとめを見逃さなくなります。

コメント

ログインして広告を非表示にする
ログインして広告を非表示にする