入れ子テンプレートクラスの関数

C++にて。
テンプレートクラス
template class A;
を引数に取る関数funcを、以下のように多重定義(というより、特殊化?)する。
template
void func(A);
template
void func(A >);
すると、普通に後者を呼び出せるときと、後者を呼び出したいのに前者と曖昧扱いになるときがある。
とりあえず関数名を変えて対処したけど、うまくいくときとそうでないときの違いを知りたい。