Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 227577
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T19:36:37+00:00 2026-05-11T19:36:37+00:00

I’m buiding an API that allows me to fetch strings in various encodings, including

  • 0

I’m buiding an API that allows me to fetch strings in various encodings, including utf8, utf16, utf32 and wchar_t (that may be utf32 or utf16 according to OS).

  1. New C++ standard had introduced new types char16_t and char32_t that do not have this sizeof ambiguity and should be used in future, so I would like to support them as well, but the question is, would they interfere with normal uint16_t, uint32_t, wchar_t types not allowing overload because they may refer to same type?

    class some_class {
    public:
        void set(std::string); // utf8 string
        void set(std::wstring); // wchar string utf16 or utf32 according
                                 // to sizeof(wchar_t)
        void set(std::basic_string<uint16_t>)
                             // wchar independent utf16 string
        void set(std::basic_string<uint32_t>);
                             // wchar independent utf32 string
    
    #ifdef HAVE_NEW_UNICODE_CHARRECTERS
        void set(std::basic_string<char16_t>)
                             // new standard utf16 string
        void set(std::basic_string<char32_t>);
                             // new standard utf32 string
    #endif
    };
    

    So I can just write:

    foo.set(U"Some utf32 String");
    foo.set(u"Some utf16 string");
    
  2. What are the typedef of std::basic_string<char16_t> and std::basic_string<char32_t> as there is today:

    typedef basic_string<wchar_t> wstring.
    

    I can’t find any reference.

    Edit: according to headers of gcc-4.4, that introduced these new types:

    typedef basic_string<char16_t> u16string;
    typedef basic_string<char32_t> u32string;
    

    I just want to make sure that this is actual standard requirement and not gcc-ism.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T19:36:37+00:00Added an answer on May 11, 2026 at 7:36 pm

    1) char16_t and char32_t will be distinct new types, so overloading on them will be possible.

    Quote from ISO/IEC JTC1 SC22 WG21 N2018:

    Define char16_t to be a typedef to a
    distinct new type, with the name
    _Char16_t that has the same size and representation as uint_least16_t.
    Likewise, define char32_t to be a
    typedef to a distinct new type, with
    the name _Char32_t that has the same
    size and representation as
    uint_least32_t.

    Further explanation (from a devx.com article “Prepare Yourself for the Unicode Revolution“):

    You’re probably wondering why the
    _Char16_t and _Char32_t types and keywords are needed in the first place
    when the typedefs uint_least16_t and
    uint_least32_t are already available.
    The main problem that the new types
    solve is overloading. It’s now
    possible to overload functions that
    take _Char16_t and _Char32_t
    arguments, and create specializations
    such as std::basic_string<_Char16_t>
    that are distinct from
    std::basic_string <wchar_t>.

    2) u16string and u32string are indeed part of C++0x and not just GCC’isms, as they are mentioned in various standard draft papers. They will be included in the new <string> header. Quote from the same article:

    The Standard Library will also provide
    _Char16_t and _Char32_t typedefs, in analogy to the typedefs wstring,
    wcout, etc., for the following standard classes:

    filebuf, streambuf, streampos, streamoff, ios, istream, ostream, fstream,
    ifstream, ofstream, stringstream, istringstream, ostringstream,
    string

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have a French site that I want to parse, but am running into
I'm making a simple page using Google Maps API 3. My first. One marker
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
this is what i have right now Drawing an RSS feed into the php,
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I have just tried to save a simple *.rtf file with some websites and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.