http://www.cplusplus.com/reference/ios/ios/operator_not/
http://stackoverflow.com/questions/8117566/why-istream-object-can-be-used-as-a-bool-expression
http://stackoverflow.com/questions/22954106/istream-ostream-vs-bool
http://stackoverflow.com/questions/16777451/c-how-is-istream-is-converted-to-bool-inside-a-conditional-expression