в предыдущей серии мы изобретали CRTP. А в этой серии мы вернемся обратно к тому с чего начинали и изобретем удивительно прекрасную синтаксическую конструкцию, сравнимую по красоте с концептами.
Пусть наша задача написать свой собственный std::bit_cast
. C++20, конечно, вышел, но до продакшена везде и повсюду ему далеко, так что такая задача вполне может быть.
bit_cast
позволяет посмотреть на значение одного типа, как будто бы это значение совершенно другого типа. Как reinterpret_cast
, только без нарушения strict aliasing rule и провоцирования UB.
В простейшем и очень не правильном виде, bit_cast
реализуется так: