wchar_tとchar16_t

char

C言語の最初のキャラクタータイプ。1バイト。ASCIIやISO-8859に使う。UTF8やShiftJISなどでも使う。Windowsの場合は通常マルチバイト文字と呼ばれるシステムの言語設定を反映した各国で異なる文字列になる。日本語のWindowsではShiftJISが入る。しかし今ではWindowsでは通常wchar_tを使いcharは使わない。Linuxでは通常UTF8を使うのでcharにはUTF8が入る。

wchar_t

次にできたキャラクタータイプ。サイズは実装依存。Windowsでは2バイト、Linuxでは4バイトになるので注意。何が入っているかも実装依存。WindowsではUTF16-LE。Linuxでは通常使用しないが、多分UTF32-LEが入っている。エンディアンはCPU依存と思われる。

char16_t, char32_t

2バイトと4バイトのキャラクタータイプ。何が入るかは実装依存。

リテラル

リテラルを表すには文字列の前に1~2文字の記号をつける。

標準ライブラリの文字列型

基本的にはbasic_stringなので、これに文字型を渡して
typedefしている。

標準入出力

string用のcoutとwstring用のwcout以外は定義されていないようだ。

Windowsのchar16_t

Windowsではwchar_tchar16_tはともに2バイトなのでキャストできるのだろう。

参考:実装ごとのサイズ

wchar_tのサイズがWindowsとLinuxで違う。