このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

C++のテンプレート、どうすべ

僕は、幸か不幸か、強い制約があるプロジェクトってあんまりやったことない(幸だな)。昔、「再帰は禁止」という規則に出会ったことはある。理由は分かりにくくなってメンテナンスに支障がある、だった。ナニイッテンダ、と思った。スタックが少ないとかの理由なら分かるが、再帰は分かりやすいだろうよな。ツリーを舐めるコードを再帰なしで書いたらよっぽど分かりにくいだろうよ。

それはともかく。

C++テンプレートは、「分かりにくくなってメンテナンスに支障がある」と禁止されても、まーしょうがない気がする。現状、そんな規則はないし、使って文句言われるようなこともないのだが、使うのは気が引ける。

自主規制としては:

  • 実装のために使って、ライブラリの利用者にはテンプレートを意識させない。
  • 似たような処理があって、コピペするか、間接参照の階層を増やすしかないときに使う。無闇には使わない。
  • テンプレートが入ったファイルは、インターフェースじゃなくて実装の一部である(したがってユーザーは気にする必要ない)と分かるようにする。

つまり、テンプレートライブラリを提供するのではなくて(誰も望んでないから)、型が具体的なライブラリを提供するが、仕掛けとしてこっそりテンプレートが使われている、と。そんな感じだろう。