Template Metaprogramming

Compile-time Garbage Collection

つまりですねぇ,型をあるスコープ内で定義して,かつその型をそのスコープの外に返せるようにするには, (upward funarg problem を解決するために) LISP 同様 compile-time GC が要るんじゃないのかなぁ〜,なんてめがっさ思わないっかなー? ま〜,全部グ…

Two-phase Name Lookup と Environment Problem

C++ LISP (LISP だけじゃないけれど) テンプレート定義 引数として関数を受ける関数の定義 テンプレート定義内の依存名 関数内の自由変数名 依存名が実際に指しているもの 自由変数が実際に指しているもの 型 関数 テンプレートの Point of Definition 関数…

複数の(異なり得る)型に対して効率的かつ安全な共通の戻り値型を計算する

複数の(異なるかも知れない)型のオブジェクトが単一の関数から返される場合を想定する. template< class T, class U > typename cradle::common_result< T const &, U const & >::type f( T const &t, U const &u, bool b ) { if( b ){ return t; } retur…

TMP as "an intra-language glue language"

ところで全然話飛ぶけれど, Template Metaprogramming ってそれ単体で純粋に有用っつー場面はほとんどないっちぅか,コンパイル時計算ですよ, Turing Complete ですよ,だからナニ?例えば, 5! をコンパイル時に計算したいなら電卓で手計算でもして "hoge…

メンバ関数の選択的実装

そういえば,前々から「ポリシー等のコンパイル時決定な条件によってメンバ関数が実装されるかされないかが異なる」場合にどうするのが良いのか気になってたんですよね.ちょうど,move_ptrはTかT[ ]かでメンバ関数が実装されているかされていないかの選択に…

Summary of MPL changes

http://lists.boost.org/MailArchives/boost/msg70420.php (boost.devel 2004/09/03~ "Summary of MPL changes") Boost1.32リリースに向けて,MPLにおける変更のsummary.

Template MetaProgramming

ちなみにこっちもAmazonから予約注文できるようになったみたいねん. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)

lambda_functor::sig

ずっと前から気になっていたんですが,boost::lambdaで戻り値の型推論に使われているsig構造体の"sig"って名前はどういう意味なんでしょうかね? #もしかして"signature"の略?

C++ Template Metaprogramming

http://boost-consulting.com/mplbook/ (`_ゝ´)フォォー!!!

数値計算(一時オブジェクトの排除)におけるETの欠点

id:Cryolite:20040510#p2より続きます. 今回は数値計算ライブラリにおけるETの負の面について書きます. 数値計算ライブラリにおいてはETはもっぱら一時オブジェクトの生成を抑えるために使われます.しかし,このことが期待しない作用をもたらすことがあり…

Expression Template(式テンプレート)の効果

id:Cryolite:20040507#p1より続きます. というわけで,今回はETの効果について検証します.今回検証に用いるのは以下の高次元のvectorの和の計算についての速度です. t = u + v + w; これを,ETによって和を実装したvectorクラスet_vector.hppを用いて実装…

ETの考え方とその簡単な実装

id:Cryolite:20040506#p2より続きます. 今日はETの基本的な考え方とその簡単な実装について書きます. ETの鍵となる考え方は,式の中に現れる各演算の結果をそのつど計算するのではなく,各演算を表す小さなオブジェクトを順々に生成していくことにあります…

日本で一番分かりやすく書いたつもりのExpression Templateの説明

日本語でのExpression Template(式テンプレート,以下ETと略)の説明で分かりやすいものがなさそうなので思い切って自分が書いてみることにします.もし,まずい説明があれば容赦ないツッコミをお願いいたします. 今日は取り合えず,ETが必要とされる状況の…

Named Template Parameter(NTP)

名前付きテンプレート引数なるものの存在を知る. http://www.josuttis.com/tmplbook/inherit/namedtmpl.cpp.html '`,、('∀`) '`,、 何この変態極まりない物体は?(褒め言葉) 最初の数行見ただけですでにめまいがw

CRTPの使われ方

CRTP(Curiously Reccursive Template Pattern / Curiously Reccuring Template Pattern)とは以下のように基底クラスのテンプレート引数として自分自身を代入するテクニックのことを指します. template class Base{/*.....*/}; class C : public Base{/*..…