templateが使いたいです

Bonanzaソース公開
http://slashdot.jp/developers/09/02/20/0716223.shtml
コンピュータ将棋選手権で優勝しちゃった実績もある、その業界では最強の一角として知られるフリーソフトBonanzaのソースが公開されていた。
流石にさらっとしか読んでないから挙動を説明するどころか局面構造体の構造を調べるとこすらしてないけど、思考に関する多くの関数が先手用関数と後手用関数とで分かれてるのでソースの量が何割も増えてるのが伺える。1000行にもわたる関数が先手専用と後手専用二つ作られてたり。一見、関数の引数として手番情報を渡すという普通の発想に対して保守性と可読性に問題が生じるようだが、よく考えていくとその手の関数 (どの着手が可能か調べたり、詰みがあるか調べたり) という関数の末端の方では必ず、「味方の玉」や「相手の駒か?」といった直接参照が大量に起こり、そのたびに引数として渡された手番情報をif文にかけたり、そこまでせずともビット論理和を取ったりするのは効率が悪いということだろう。
ふと思いついたけどこれって全部template文で書き換えると綺麗に収まるよね。根元の関数から末端の着手生成関数まで、ソースコードの主要部分が殆どtemplate、カッコイイ!