variáveis ​​estáticas vs não estáticas no namespace

Eu tenho um namespacefoo que contém um inteirobar, declarado assim ...

foo.h:

namespace foo {
    int bar;
}

Agora, se eu incluirfoo.h em apenas um arquivo, isso funciona bem. Mas surge um problema quando incluofoo.h de dois ou mais arquivos: recebo um erro de vinculador. Eu descobri que se eu declararbar ComostaticPosso incluirfoo.h em mais de um arquivo. Isso parece estranho para mim, porque eu não estava ciente de que alguém poderia declarar uma variável estática dentro de um namespace. (Afinal, o que isso quer dizer?)

Por que isso funciona? E mais importante, porquenão faz funcionasem static? O questatic significa quando usado em umnamespace?

questionAnswers(4)

yourAnswerToTheQuestion