On Sun, 16 Aug 2009 05:05:01 +0000, Steven D'Aprano wrote:

> Now that I understand what the semantics of cout << "Hello world" are, I 
> don't have any problem with it either. It is a bit weird, "Hello world" 
> >> cout would probably be better,

Placing the stream on the LHS allows the main forms of << to be
implemented as methods of the ostream class. C++ only considers the LHS
operand when attempting to resolve an infix operator as a method.

Also, << and >> are left-associative, and that cannot be changed by
overloading. Having the ostream on the LHS allows the operators to be
chained:

        cout << "Hello" << ", " << "world" << endl

equivalent to:

        (((cout << "Hello") << ", ") << "world") << endl

[operator<< returns the ostream as its result.]

Even if you could make >> right-associative, the values would have to be
written right-to-left:

        endl >> "world" >> ", " >> "Hello" >> cout
i.e.:
        endl >> ("world" >> (", " >> ("Hello" >> cout)))

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to