テンプレート (プログラミング)
次に、ほとんど全てのコンパイラは、テンプレートを使ったコードにエラーを検出したときに、混乱を誘発するような、長く、そして役に立たないエラーメッセージを出力する。これはテンプレートを使った開発を難しくしている。
最後に、テンプレートは実体化される度にコードが生成されていくため、無秩序に使っていくとコードの膨張を引き起こし実行ファイルが大きくなってしまう問題がある。しかしながら一部のケースでは、うまくテンプレートの特殊化を利用することで、そのようなコードの肥大化を劇的に減らすことができる。そのほか、実体化されたもののうち、完全に同じテンプレート実引数に対するコードは共有するように最適化されたコードを出力するコンパイラを利用することで改善できるが、これはインライン化によるオーバーヘッド低減とのトレードオフでもある。また、テンプレートによって生じる余分なインスタンス化はデバッガが素直にテンプレートを扱うことを困難にする原因ともなりうる。例えばソースコードのテンプレートの中にブレークポイントをセットする場合、実際のインスタンスの中の望ましい場所にセットすることに失敗するかもしれないし、そのテンプレートによってインスタンス化された全ての場所にブレークポイントを設置しなければならないかもしれない。
テンプレートは実体化に際して完全な定義が必要である。非テンプレートの関数やクラスのように、宣言部をヘッダーファイルに記述し、実装部をソースファイルに分離することはできない。C++03にはexportキーワードによるテンプレートのエクスポート機能が存在していたが、C++11では削除された。