title: std::u32string conversion to/from std::string and std::u16string
body: <p>I need to convert between UTF-8, UTF-16 and UTF-32 for different API's/modules and since I know have the option to use C++11 am looking at the new string types.</p>
  
  <p>It looks like I can use <code>string</code>, <code>u16string</code> and <code>u32string</code> for UTF-8, UTF-16 and UTF-32. I also found <code>codecvt_utf8</code> and <code>codecvt_utf16</code> which look to be able to do a conversion between <code>char</code> or <code>char16_t</code> and <code>char32_t</code> and what looks like a higher level <code>wstring_convert</code> but that only appears to work with bytes/<code>std::string</code> and not a great deal of documentation.</p>
  
  <p>Am I meant to use a <code>wstring_convert</code> somehow for the UTF-16 ↔ UTF-32 and UTF-8 ↔ UTF-32 case? I only really found examples for UTF-8 to UTF-16, which I am not even sure will be correct on Linux where <code>wchar_t</code> is normally considered UTF-32... Or do something more complex with those codecvt things directly?</p>
  
  <p>Or is this just still not really in a usable state and I should stick with my own existing small routines using 8, 16 and 32bit unsigned integers?</p>