It seems that std::basic_string has overloads for cout only for some specializations (for character strings), but you can output the contents "char-by-char" using the copy algorithm.
BTW, you don't need the class and struct keywords in this context, and you might typedef the ugly type (also, the last two template arguments could be detected automatically from the first?):
Code:
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
/*
typedef
std::basic_string<unsigned short, std::char_traits<unsigned short>,std::allocator<unsigned short> >
ushort_string;
*/
typedef std::basic_string<unsigned short> ushort_string;
void SendOut(ushort_string const & s)
{
std::copy(s.begin(), s.end(), std::ostream_iterator<unsigned short>(std::cout, ""));
}
int main()
{
ushort_string s(10, 3);
SendOut(s);
}