Home > Blockchain >  what is this before u8 string literal prefix for?
what is this before u8 string literal prefix for?

Time:12-27

when I was reading codecvt example in cppref, I noticed this line:

std::string data = reinterpret_cast<const char*>( u8"z\u00df\u6c34\U0001f34c");

Any idea what is that before u8 for? Because I removed it and nothing changed in result.

CodePudding user response:

The is "explicitly" performing the array-to-pointer implicit conversion, producing a prvalue const char8_t* (or const char* before C 20), instead of an lvalue array.

This is unnecessary since reinterpret_cast<T> (when T is not a reference) performs this conversion anyways.

(Possibly it was used to prevent confusion with the similar reinterpret_cast<const char* const&>(u8"..."), which interprets the bytes of the array as a pointer, which is obviously not what was wanted. But I personally wouldn't worry about this)

  • Related