A friend of a class template can be a function template or class template, a specialization of a function template or class template, or an ordinary (non-template) function or class. A class template can have various types of friendship. First, you can declare ordinary functions and classes as friends of a given class template. Non-template friend declarations of a class template look quite similar to friend declarations of a nontemplate class. In this example, the class template Vector declares the ordinary function f() and class Thing as its friends:
class Thing {/*..*/};template class Vector{public: //