|
@@ -147,4 +147,14 @@ namespace bx
|
|
|
return _a && !(_a & (_a - 1) );
|
|
return _a && !(_a & (_a - 1) );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ template <typename To, typename From>
|
|
|
|
|
+ inline constexpr To bit_cast(const From& value) noexcept
|
|
|
|
|
+ {
|
|
|
|
|
+ BX_STATIC_ASSERT(sizeof(To) == sizeof(From), "To and From must be the same size.");
|
|
|
|
|
+ BX_STATIC_ASSERT(isTriviallyConstructible<To>(), "Destination target must be trivially constructible.");
|
|
|
|
|
+ To result;
|
|
|
|
|
+ bx::memCopy(&result, &value, sizeof(To));
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
} // namespace bx
|
|
} // namespace bx
|