I wrote this just for fun when saw article about sso in Rust[1]. My string can store up to 23 (excluding null-terminator) 8-bit chars without calling allocator.
Here I can mistake, but..
Curious fact: both - libstdc++[2] and libc++[3] - do access to union member without any check that it is active now.
AFAIK, this is UB in C++. But I assume that they just rely on theirs compiler features. I tried to avoid this using `std::byte[]`.
But I'm still sure that there are several UB's in my code :)
[1] https://tunglevo.com/note/an-optimization-thats-impossible-i...
[2] https://github.com/gcc-mirror/gcc/blob/d09131eea083e80ccad60...
[3] https://github.com/llvm/llvm-project/blob/4468d58080d0502a05...
Here's my user test:
https://news.pub/?try=https://www.youtube.com/embed/tQXoCbUh...
reply