テンプレートメタプログラミング
コンパイル時と実行時のトレードオフ: テンプレートのコードはコンパイル時に処理/評価/展開されるので、コンパイルに時間がかかることになるが、実行コードはより最適化される。このオーバヘッドは一般に小さいが、巨大なプロジェクトやテンプレートを多用する場合は無視できない。
ジェネリックプログラミング: テンプレートメタプログラミングによってプログラマはアーキテクチャに集中でき、コンパイラに細かい実装の生成を任せることができる。従って、テンプレートメタプログラミングによって真にジェネリックなコードが実現し、コードの縮小と保守性の向上をもたらす。
可読性: C++ではテンプレートメタプログラミングを使ったコードは本来のC++のコードとは異なり、慣れないと読解に時間がかかる。従って、テンプレートメタプログラミングに不慣れなプログラマにとっては、コードの保守性が低下すると言える(もっとも、これは各言語のテンプレートの実装に依存する)。
移植性: C++では、テンプレートメタプログラミングのサポート状況がコンパイラによって異なるため(特に新しい形式)、移植性の問題が発生する可能性がある。