The current typeless memory is either

 - std::byte, char, unsigned char

 

As compile-time evaluation tries to avoid UB nearly completely and also tries to not use any implementation-defined features, there is less room for low-level inspection or modification.

 

There is also constexpr std::bit_cast

 

What usage examples do you have for the typeless_memory, which are not implementation-defined, allow the compiler to check and avoid UB (which e.g. entails an understanding of object lifetimes, types and memory locations) and which cannot be solved with the current tools in the standard library?


 

-----Ursprüngliche Nachricht-----
Von: James via Std-Proposals <std-proposals@lists.isocpp.org>
Gesendet: Sa 30.11.2024 10:56
Betreff: [std-proposals] std::typeless_memory (type punning)
An: std-proposals@lists.isocpp.org;
CC: James <james.business.84@gmail.com>;
Currently you can do whatever you want at runtime when it comes to type punning. Sure, all of them might not be safe, but you have some ways to do it safely. However in compile time (as far as I know) there is no way to achieve type punning.

So I'd like to see this type, in standard library
https://godbolt.org/z/1dEjYW1hW

It's only purpose is to allow treating some underlying memory as whatever type you want in compile time without using extra memory. It would also provide a shortcut for runtime usage
Currently you can't achieve that due to placement new and reinterpret_cast not being usable in compile time context
-- 
 Std-Proposals mailing list
 Std-Proposals@lists.isocpp.org
 https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals