template<typename T> class CTest
{ friend bool operator ==(const Test<T>& t1,const Test<T>& t2); };
//CTestをcharに特殊化
template<> class CTest<char>
{ friend bool operator ==(const Test<char>& t1,const Test<char>& t2); };

上の二つのクラスに、別々のoperator == をつけようと思い、
(1)か(2)の方法でクラス外で定義して、クラスにはfriendで実装
しようと思ったのですが、どちらもエラーになります。
これは不可能なことなのでしょうか?

(1)クラス外の関数の特殊化を試みる > Error!
template <typename T> bool operator ==(const Test<T>& t1,const Test<T>& t2)
{return true;}

template <> bool operator ==(const Test<char>& t1,const Test<char>& t2)
{return true;}

(2)別々に operator を作る。 > Error!
  (クラス外定義なのでオーバーロードできないみたい)
bool operator ==(const Test<int>& t1,const Test<int>& t2)
{return true;}

bool operator ==(const Test<char>& t1,const Test<char>& t2)
{return true;}