//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // wstring_convert // wstring_convert(const byte_string& byte_err, // const wide_string& wide_err = wide_string()); #include #include #include int main() { typedef std::codecvt_utf8 Codecvt; typedef std::wstring_convert Myconv; #if _LIBCPP_STD_VER > 11 static_assert(!std::is_convertible::value, ""); static_assert( std::is_constructible::value, ""); #endif { Myconv myconv; try { myconv.to_bytes(L"\xDA83"); assert(false); } catch (const std::range_error&) { } try { myconv.from_bytes('\xA5'); assert(false); } catch (const std::range_error&) { } } { Myconv myconv("byte error"); std::string bs = myconv.to_bytes(L"\xDA83"); assert(bs == "byte error"); try { myconv.from_bytes('\xA5'); assert(false); } catch (const std::range_error&) { } } { Myconv myconv("byte error", L"wide error"); std::string bs = myconv.to_bytes(L"\xDA83"); assert(bs == "byte error"); std::wstring ws = myconv.from_bytes('\xA5'); assert(ws == L"wide error"); } }