Isn't a const variable at namespace scope implicitly static?
<p>I know that <code>static const int x = 42;</code> at namespace scope is equivalent to <code>const int x = 42;</code> because <code>const</code> variables are implicitly <code>static</code> (they must be declared <code>extern</code> to be given external linkage).  Every translation unit that includes this declaration gets a local copy of <code>x</code>.</p>

<p>Does this only apply to certain (perhaps integer?) types?  I have the following code in a header file:</p>

<pre><code>namespace XXX {
    static const char* A = "A";
    static const char* B = "B";
    static const char* C = "C"; // and so on
}
</code></pre>

<p><strong>(PLEASE spare me the comments on why I should not be using C-style strings -- this is legacy code)</strong></p>

<p>This header is included from several source files, and all is fine (each compilation unit gets its own copy of these <code>char*</code>'s).  I would have thought that I could remove the <code>static</code> from these, as it is redundant, but when I do, I get link errors about the symbols being already defined in another object.  What am I missing here?  Are these <code>const char*</code>'s <strong>not</strong> implicitly static?</p>
