Variables estáticas vs no estáticas en el espacio de nombres

Tengo un espacio de nombresfoo que contiene un número enterobar, declarado así ...

foo.h:

namespace foo {
    int bar;
}

Ahora si incluyofoo.h En un solo archivo, esto funciona bien. Pero surge un problema cuando incluyofoo.h de dos o más archivos: me sale un error de vinculador. Me di cuenta de que si declarobar comostatic, Puedo incluirfoo.h en más de un archivo. Esto me parece extraño, porque no sabía que se podía declarar una variable estática dentro de un espacio de nombres. (¿y eso que significa?)

¿Por qué funciona esto? Y lo más importante, ¿por qué?no hace funcionasin static? Que hacestatic significa cuando se utiliza en unanamespace?