template classの派生クラスをfriendに指定する場合、基底クラスをtemplate friend
にしても効果が無いようなんですが、派生クラスを全てfriendにしていくしかないのでしょうか?

template<class T>
class A {
protected:
 T x;
 template<class T1> friend class A;
public:
 template<class SRC>
 void copy(SRC& r) {
  x = r.x;
 };
};

template<class T>
class B : public A<T> 省略

{
 A<int> a;
 B<short> b;
 a.copy(b); //Aの派生型だけどBにはfriendの効果がない
}