codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
//最大公約数を取るテンプレートプログラム typedef A<0> arg1;//引数エイリアス作成 typedef A<1> arg2;//引数エイリアス作成 typedef V<0> value1;//変数エイリアス作成 typedef V<1> value2;//変数エイリアス作成 //処理ブロックを定義 typedef Cons //ConsはlispのConsと同じ。内部でS式のリストを作成している。 < Move< value1,arg1 >//arg1からvalue1へ代入 , Move< value2,arg2 > , If < Equal< C<0>,value1 >//Ifの1引数は判定式を取る , Cons//処理ブロック < Return< arg2 >//値を返す > > , While < //If同様1引数目は、判定式を取る Equal< C<0>,Div< Mod< Cons< value1,value2 > > > > , Cons//処理ブロック < Move< value2,value1 > > > , Return< value1 > > program;//プログラムを再利用出きるよう保存する //テンプレートを実行する。テンプレートで書いたプログラムが実行時かコンパイル時の //どのタイミングで実行されるかはテンプレートプログラムを解釈するクラス次第。 Execute< program,Cons< C<20>,C<10> > >(); //補足:S式の定義 必要ないので宣言だけして本体は定義しない。 template<class car,class cdr> struct Cell;
Private
[
?
]
Run code
Submit