Is basic_string conversion via iterators legal?

c++, c++11, string, string-conversion

Solution

Yes, it is legal, because a `char` can be initialized from a `char16_t`. However, the result of the conversion is implementation-defined if the `char` is signed and the value is too large to fit (C++11 §4.7/3). (Whether `char` is signed or unsigned is also implementation-defined, §3.9.1/1.)

As pointed out in comments, this will not convert your string into another encoding. (That being said, it will probably work in the case that the string contains only ASCII characters. That being said, don't do it.)

Problem

Is iterator a propper conversion between basic_strings? Is this safe/legal? Does this create a valid string? ``` std::u16string str16; //str16 is set here; std::string cStr(str16.cbegin(), str16.cend()); ``` In VS 2013 it seem to work ok.

Original source

Related problems