Po prostu ten język tak ma. Na poziomie globalnym, jak to nazywasz, mogą być tylko deklaracje (zmiennych, funkcji, klas, przestrzeni nazw, itd...). Instrukcje muszą być wewnątrz funkcji.
Ale ponieważ cout << x to wyrażenie, to może być częścią inicjalizatora, więc da się użyć poza funkcją, np.:
#include <iostream>
int x = (std::cout << "hello\n", 7);
int main()
{
}
Tylko po co tak robić?