1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #ifndef BASE_BIT_CAST_H_
- #define BASE_BIT_CAST_H_
- #include <string.h>
- #include <type_traits>
- #include "base/compiler_specific.h"
- #include "base/template_util.h"
- #include "build/build_config.h"
- template <class Dest, class Source>
- inline Dest bit_cast(const Source& source) {
- static_assert(sizeof(Dest) == sizeof(Source),
- "bit_cast requires source and destination to be the same size");
- static_assert(base::is_trivially_copyable<Dest>::value,
- "bit_cast requires the destination type to be copyable");
- static_assert(base::is_trivially_copyable<Source>::value,
- "bit_cast requires the source type to be copyable");
- Dest dest;
- memcpy(&dest, &source, sizeof(dest));
- return dest;
- }
- #endif
|