多分

template < class T >
class test
{
friend template< class U > std::ostream& operator<< ( std::ostream& os, test< U > t );
public:
void set( T val ) { x = val; }
private:
T x;
};

本当は知らない。