// {
// cout << a << endl;
// }
// 함수보다는 함수객체가 훨씬 좋다.
template<typename T> struct Show
{
        ostream& os;
        Show( ostream& s = cout ) : os( s ) {}
        void operator()( T a )
        {
                os << a << endl;
        }
};
// Point foo( Point )
// {
//      Point p;
//      return p;
//      return Point();        // RVO
// }
void main()
{
//      Point p;
//      foo(p);                // 객체를 만들어서 복사해서 보내기.
//      foo( Point() );        // 만들면서 보내는게 좋다!!
        int x[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//      ofstream f( "a.txt" );
//      Show<int> s(f);
//      for_each( x, x+10, s );
        for_each( x, x+10, Show<int>() );
        //for_each( x, x+10, foo );
}