This may be a copy-paste error, but there are only a few errors. Firstly, there may not be free functions const, but you have marked dumpas such. The second error is that it dumpdoes not return a value, which is also easily fixed. Fix those and it should work:
template <typename T> // note, might as well take p as const-reference
std::ostream& dump(std::ostream &o, const point<T>& p)
{
return o << "x: " << p.x << "\ty: " << p.y << std::endl;
}