Sidenote, but I believe in most spots that we use CStdStringW, we're making some assumptions at some point that it's 16bit.  I suspect what we actually want where CStdStringW is used is a u16string in most cases.  The possible exception might be in some of the win32 functions.

It would be great if you could carefully review the usage of CStdStringW to nail down these cases.