15de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// -*- C++ -*- 25de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh//===----------------------------------------------------------------------===// 35de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// 45de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// The LLVM Compiler Infrastructure 55de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// 65de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// This file is dual licensed under the MIT and the University of Illinois Open 75de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// Source Licenses. See LICENSE.TXT for details. 85de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh// 95de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh//===----------------------------------------------------------------------===// 105de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#include <string> 115de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#include <cassert> 125de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 135de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsiehint main() 145de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh{ 155de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#if _LIBCPP_STD_VER > 11 165de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh using namespace std::literals::string_literals; 175de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 185de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert ( std::is_same<decltype( "Hi"s), std::string>::value, "" ); 195de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert ( std::is_same<decltype( u8"Hi"s), std::string>::value, "" ); 205de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert ( std::is_same<decltype( L"Hi"s), std::wstring>::value, "" ); 215de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert ( std::is_same<decltype( u"Hi"s), std::u16string>::value, "" ); 225de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert ( std::is_same<decltype( U"Hi"s), std::u32string>::value, "" ); 235de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 245de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh std::string foo; 255de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh std::wstring Lfoo; 265de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh std::u16string ufoo; 275de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh std::u32string Ufoo; 285de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 295de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = ""s; assert( foo.size() == 0); 305de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = u8""s; assert( foo.size() == 0); 315de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Lfoo = L""s; assert(Lfoo.size() == 0); 325de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh ufoo = u""s; assert(ufoo.size() == 0); 335de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Ufoo = U""s; assert(Ufoo.size() == 0); 345de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 355de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = " "s; assert( foo.size() == 1); 365de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = u8" "s; assert( foo.size() == 1); 375de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Lfoo = L" "s; assert(Lfoo.size() == 1); 385de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh ufoo = u" "s; assert(ufoo.size() == 1); 395de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Ufoo = U" "s; assert(Ufoo.size() == 1); 405de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 415de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = "ABC"s; assert( foo == "ABC"); assert( foo == std::string ( "ABC")); 425de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh foo = u8"ABC"s; assert( foo == u8"ABC"); assert( foo == std::string (u8"ABC")); 435de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Lfoo = L"ABC"s; assert(Lfoo == L"ABC"); assert(Lfoo == std::wstring ( L"ABC")); 445de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh ufoo = u"ABC"s; assert(ufoo == u"ABC"); assert(ufoo == std::u16string( u"ABC")); 455de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh Ufoo = U"ABC"s; assert(Ufoo == U"ABC"); assert(Ufoo == std::u32string( U"ABC")); 465de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#endif 475de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh} 48