#include #include #include using namespace std; template string toString( const Object & x ) { ostringstream os; os << x; return os.str( ); } class Person { public: Person( const string & n = "", double s = 0.0 ) : name( n ), salary( s ) { } void print( ostream & out = cout ) const { out << name << " " << salary; } private: string name; double salary; }; ostream & operator<< ( ostream & out, const Person & p ) { p.print( out ); return out; } int main( ) { string s1 = toString( Person( "Jane", 123456 ) ); string s2 = toString( 45 ); string s3 = toString( 3.14 ); cout << s1 << '\n' << s2 << '\n' << s3 << endl; return 0; }