I like the concept of the << >> operator overloading and adding as a buddy of those classes after reading the FAQ a little bit further. However, I'm not clear how this prevents encapsulation from being broken. When may these deviations still adhere to OOP's stringent guidelines?