Generic Programming

Douglas Gregor による C++0x の Concept についての talk

うっはーーー!!!. こういう専門家の話を聞きたかったのだ!だだだ!わーい!わーい!

C++0x の concept の特色の1つは非侵入的 (non-intrusive) であることじゃないか,ってゆ〜

今提案されている C++0x に向けての concept の提案が,いわゆる Java とかの Generics と決定的に違う部分の1つとして, C++0x の concept の場合, concept に関する宣言 (制約の充足の記述) が対象のクラスのクラス定義と独立した位置に記述できる (クラ…

nominal な concept の充足を半自動で伝播するよ〜な,なんかそんな感じ

http://d.hatena.ne.jp/Cryolite/20061222 なんで俺こんな血迷ったこと書いたんでしょうか?ちゃんと徹底的に調べて書けよヴぉけって感じ. 現在提案されている concept の仕様では,ある型が concept の要求を充足するかどうかを構造的に判定するか宣言的に…

C++ の range で iterate 相当のことがしたいときの value_type

C++ で iterate 相当の機能を提供する range の value_type はどうすれば良いのでしょうねぇ,という思関数期特有なお悩み. C++ の場合,関数として多相関数オブジェクトが指定できる (し,実際そういうものを指定したい) 上に,関数が ad-hoc な多相性を発…

オブジェクト指向な (適切な言葉が見つからない……継承に基づく polymorphism による?) ライブラリだと,ユーザから状態を与えられ,その状態を保持して,ユーザの要求に応じてユーザが与えた状態 (もしくはそれに依存する状態) を返すようなライブラリで,…

自身が定義したユーザ定義型とか, third party から提供されるクラスとか, built-in な型とか,そういうのを汎用なライブラリで使用するにあたって,静的な世界の糊付けを行うのが (template metaprogramming +) traits で,動的な世界 (振る舞い, behavio…

関数テンプレートにおける右辺値識別

完全に個人的なメモなので気にしないよ〜に. #include <iostream> #include <boost/mpl/identity.hpp> #include <boost/mpl/if.hpp> #include <boost/type_traits/is_volatile.hpp> #include <boost/static_assert.hpp> struct volatile_refused; template< class T, class R = void > struct refuse_volatile : public boost::mpl::if_< boost:…</boost/static_assert.hpp></boost/type_traits/is_volatile.hpp></boost/mpl/if.hpp></boost/mpl/identity.hpp></iostream>

もにゃど的アダプタ

あ〜,くそぉっ!!もにゃど分かんねっ!!もにゃど分かんねっ!!もにゃど分かんねっ!!もにゃど分かんねっ!!もにゃどをちゃんと理解してて,あと関連するプログラミング言語・理論あたりについてきちんとサーベイすればある程度のとこに出しても恥ずか…

kind system

前々から「C++ でいうところの concept という概念は,(Generic) Haskell では "kind system" と呼ばれている」とゆ〜のをちらほら目にしていて,"kind system" とゆ〜のが気になっていて仕方なかったのでお勉強してみようと web で資料を漁ってみるテスト.…

コンセプト

http://tinyurl.com/8wsoz (以下の各引用はちゃんと元のポストを読んで,その文脈を把握した上で読んでくださるよう強くお願いします) If there were some abstract type from which int, char, etc, were derived then templates would be unnecessary. I…

Constrained genericity at last? (any interest in an operator traits/concept traits library?)

http://lists.boost.org/MailArchives/boost/msg71111.php (boost.devel 2004/09/14~) だからこーゆー面白そうな議論するなっちゅーねん.時間なくなるからっ!!

新しいコンセプトチェックの提案

http://lists.boost.org/MailArchives/boost/msg70844.php (boost.devel 2004/09/11~) OOPSLA2004WSでのproposalらしいけど These basic concepts should return a boolean results instead of aborting compilation immediately, thus any metaprogramming …

やっぱりよぐわがんね

boostとか見てると,動的多相性が必要ないならインターフェースはメンバ関数ではなくてfree-standing functionで提供しちゃえって潮流が感じられるんですけれど気のせいかなぁ.というか全般的にこうなんちゅーかhierarchical & intrusiveからflat & non-int…

関数テンプレートへのポインタとコンセプトチェック

C++における汎用プログラミングにおいて「ある型に対して特定の構文がコンパイルされるかどうか」をチェックしたいという要求がありました.何故このようなことが必要かは http://www.boost.org/libs/concept_check/concept_check.htm#motivating-example ht…

自由関数とADL

以前,自由関数でインターフェースを提供することについて考えた結果,どうもADL周りがイヤンな感じだなと思ったことがあった(id:Cryolite:20040722#p3)けれど,ML漁ったらやっぱりそういう議論やってるんですにゃ.面倒くさがらずに漁ってみるもんですな…

non-intrusiveなインターフェース

むぅ,インタフェースをメンバ関数で提供する場合と自由関数で提供する場合の2つの違いと得失を論じようと思ったけれど,よくよく考えてみると色々微妙だった・・・.もう少し考えよう・・・.

何故に特性が"non-intrusive"であることが重要か

A key feature of traits templates is that they're non-intrusive: they allow us to associate information with arbitrary types, including built-in types and types defined in third-party libraries, Normally, traits are specified for a particu…

何か当たり前のことではしゃいでいただけの希ガス

id:Cryolite:20040426で書いたことって,「concept」を「インターフェイス定義の集合」と読み替えれば,普通に当たり前のことを書いていただけの希ガス・・・.インターフェイスが重要なのはOOPで散々言われていることじゃないですか.特にconceptを構成する…

重要なのはModelではなくてConceptじゃなかろうか?

少なくともGeneric Programmingの文脈では,Conceptが厳密に定義され,それが完全に文書化されていることが重要だと思うようになってきた(ConceptとModelの定義についてはhttp://www.boost.org/more/generic_programming.htmlを参照してください).この観…

C++ Templates

"C++ Templates"(asin:0201734842)ついにキタ━━━━(Д゜(○=(゜∀゜)=○)Д゜)━━━━━!!!!時間ないので目次から適当に面白そうな項目をピックアップ. Dynamic versus Static Polymorphism Traits and Policies: What's the Difference? Member Templates versus Tem…

先達のお言葉

http://lists.boost.org/MailArchives/boost/msg29087.php 当たり前のこと言ってるはずなんだけどこの人が言うと説得力が違う. One observation to make is that efficiency is like friction: you never can take it back. This phenomenon is especially …

Policy or Trait?

前に同じ題を出しましたが,今回はまた別で.舞台はやっぱりBoostですがw. http://page.freett.com/shelarcy/diary2002-6.html ここから情報をキャッチ.若干古い議論ですが以下が元. http://lists.boost.org/MailArchives/boost/msg29015.php ミーハーな…

C++ templates: The Complete Guide

"C++ Templates"(asin:0201734842)を紀伊国屋のwebで注文.本当はamazonで注文したかったのだが,取次ぎが無いようなので仕方なく紀伊国屋で.洋書を自分で買うのって実は"The Penguin Dictionary of Physics"(asin:0140514597)以来だったり.今の仕事場には…

Policy or Trait?

Exceptional C++の項目2読んだときに, 「std::char_traitsってMC++Dの言葉で言えばtraitsと呼ぶよりむしろpolicyと呼ぶべきだよな〜」 と思ったんですが,実際こう考えている人は私だけではなかったようで I know that my definitions mean that std::char_…

最近毒され気味なのか?

未来のC++プログラミングは全ての実装をヘッダファイルで行い、 アプリケーション中、ただ一つのmain.cppでは、 コンフィギュレーションの類いを記すだけとなる これを見てほんの一瞬でも「あ〜,なるほどな」と思ってしまった自分はだいぶ病んでるのかも知…

Boost developers mailing listに参加してみる

こんだけBoost, Boost言ってるんだからやっぱ参加しないわけにはいかないと思って登録.一人のuserとして深い設計思想を理解しておきたいって言うのと,genericな設計の最前線ではどういう議論が交わされているんだろうかという興味と,あわよくば自分も口出…