std::wstring is a container of wchar_t. The size of wchar_t is not specified - Windowsspecified—Windows compilers tend to use a 16 bit-bit type, Unix compilers a 32 bit-bit type.
UTF-16UTF-16 is a way of encoding sequences of unicodeUnicode code points in sequences of 16 bit-bit integers.
IfUsing Visual Studio, if you use wide character literals (e.g. L"Hello World") that contain no characters outside of the BMP in Visual StudioBMP, you'll end up with UTF-16, but mostly the two concepts are unrelated. If you use characters outside the BMP, std::wstringstd::wstring will not translate surrogate pairssurrogate pairs into unicodeUnicode code points for you, even if wchar_t is 16 bits.