Would implementing a default cast("string") implementation for objects that lack one be a good idea, if they respond to _sprintf("%s")? It is somewhat magical. The same could theoretically apply to int/%d, but I have a feeling it might be more questionable. Even more, float/%f. Any thoughts?
Lessons learned from automatic _sprintf decoration have been largely positive, in my experience. (That might not imply anything about this proposal, though. It would, for instance, rarely throw errors about a missing cast implementation, in concert with the _sprintf decorator.)