The initialisation order for global statics is undefined, so it seems that declaring g_numbers here could cause crashes if a static initialiser elsewhere calls InternedString( someNumber ). The usual workaround is to create the static within a function so it'll be created on the first call to that function (see the hashSet() function in the same file which is used for that purpose). Perhaps you can just declare it in numberString()?