たまにはsizeof (wchar_t) == 4でUCS-4/UTF-32な奴らも忘れないで。

>>82
std::basic_string<uint32_t> u32(const wchar_t*);のような関数を定義しておけば、
これくらいにはできる。

typedef std::basic_string<uint32_t> u32string;
u32string s = u32(L"hogehoge");

Win32 APIの_TやTEXTマクロみたいなもんだと思えばたいしたことはない、ってダメ?

それはともかく、C++0xにはchar16_tやchar32_tなる型が入るらしいよ。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
http://pc11.2ch.net/test/read.cgi/tech/1149440647/372-