I'll leave this pull request open for a week, for the sake of discussion, since it's a major change
In the past, the great idea was come upon that a ToString() method should be implemented in every class, then some glue logic could allow operator<<() for any arbitrary mlpack object. This was done with template metaprogramming (see sfinae_utility.hpp by Trironk, it is quite cool) and worked fine.
However, as time has gone on, it's unclear to me whether or not this feature is actually useful, and personally I am of the opinion that it should be removed, so I made a few commits removing all the ToString() functions and related functionality and made this pull request. Here are my arguments for why it isn't very useful:
So, those are the primary reasons I think that we should remove---or at least rethink---the ToString() functionality. Like I said, I'll leave this open for a week for discussion, then merge in the change. So if you disagree with anything I've written here, or you find the ToString() functions particularly useful, feel free to comment! My perspective is not the only perspective. :)
Remove ToString() from everything.
It's more hassle than it's worth; hard to maintain, difficult to know what
exactly should be printed, and maybe wasn't all that useful to begin with.
Removing this should reduce the API necessary for new contributors.
Remove special handling for ToString().
Okay, nobody had any comments so I merged it in. :)