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)