tellp returns std::streampos: http://www.cplusplus.com/reference/iostream/ostream/tellp/
If you have many overloads you can easily get ambiguity for the types you didn't overload but which are compatible with the ones you used in the overloaded parameters.
Some solutions could be:
- Overload for any built-in type and any other type you know will be needed
- Overload only for few types so that the ambiguity won't be a problem ( only one possible implicit cast given a type )
- Use some sort of template instead of he overloads ( This if the code is the same for many overloads )