32の質問ももはやテンプレに入れてもいいのではというほど既出。

テンプレートはコンパイル時に定義が見えていないとコンパイルできないのが原則。
ただし例外がある。
1. 宣言にexportを付ける。 - 正攻法だが対応しているコンパイラは絶望的に少ない。
2. ヘッダで定義したり、定義があるcppをヘッダでインクルードしたりする。 - ようするに諦めること。おそらく最もよく取られる手段。
3. cppファイルで明示的実体化を宣言する。 - テンプレート引数を使うだけ並べなければならず面倒。