Sort of. istream operator >> waits until there is some data available before returning it. One thing you're wrong about is this is not a rule of c++ this is just how cin (and, generally, console) works. cin is not a part of the language. You could, for example, use WinAPI or ncurses to do stuff with console.