Do you use ItemMapUser::map
in code which can be called from
the constructor of a static object? There's no problem
initializing the references with unconstructed objects, but
there will be if you use them before the object is constructed.
Re your questions:
Not unless you actually use the objects the references designate in the constructor of a static object.
Basically, the fact that these are references, and you can safely initialize a referene with an unconstructed object. (There are certain restrictions when inheritance is involved, but they don't seem to be relevant here.)
It has nothing to do with whether you're initializing an object or an array. If you're initialization an object (member of an array or not) rather than a reference, and calling the copy constructor, the object being copied had better be constructed. Which you can only guarantee if it is defined in the same translation unit.