6#ifndef MIMICPP_UTILITIES_CXX20_COMPATIBILITY_HPP
7#define MIMICPP_UTILITIES_CXX20_COMPATIBILITY_HPP
13#ifndef MIMICPP_DETAIL_IS_MODULE
17#ifdef __cpp_lib_bit_cast
19 #ifndef MIMICPP_DETAIL_IS_MODULE
30 #ifndef MIMICPP_DETAIL_IS_MODULE
32 #include <type_traits>
38 template <
typename To,
typename From>
40 sizeof(To) ==
sizeof(From)
41 && std::is_trivially_copyable_v<From>
42 && std::is_trivially_copyable_v<To>,
47 static_assert(std::is_trivially_constructible_v<To>,
"This implementation additionally requires destination type to be trivially constructible");
50 std::memcpy(&dst, &src,
sizeof(To));
#define MIMICPP_DETAIL_MODULE_EXPORT
Definition Config.hpp:19
std::enable_if_t< sizeof(To)==sizeof(From) &&std::is_trivially_copyable_v< From > &&std::is_trivially_copyable_v< To >, To > bit_cast(From const &src) noexcept
Definition C++20Compatibility.hpp:45