This isn't a bug - there's a fundamental problem with older Visual Studio compilers where they couldn't distinguish between the types of an unsigned int and a wide char, so it was impossible to give String overloaded operators to handle the types differently.
I think Joshua has been tinkering around with this recently, as we may be able to change things so that it works as you'd expect if you're using an up-to-date C++ compiler, and we'll probably release some changes for that soon.
Sure, of course we know that some people will find uint32 more useful, and others will find wide-chars more useful.
But as library writers we have to release code that suits everybody, and we can't make changes that would change the behaviour of people's existing code, so we can't just change this to work the way you'd like it to.
But this is easy for you to work around: just cast your uint32 to an int.