[dawn] Replace `dawn::BitCast` with C++20 `std::bit_cast`

Bug: 343500108
Change-Id: I2ffa0114ab9975c7c696853bd73f5d233ef9011c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245035
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/common/Math.cpp b/src/dawn/common/Math.cpp
index f9d86b7..c896cce 100644
--- a/src/dawn/common/Math.cpp
+++ b/src/dawn/common/Math.cpp
@@ -74,7 +74,7 @@
 }
 
 uint16_t Float32ToFloat16(float fp32) {
-    uint32_t fp32i = BitCast<uint32_t>(fp32);
+    uint32_t fp32i = std::bit_cast<uint32_t>(fp32);
     uint32_t sign16 = (fp32i & 0x80000000) >> 16;
     uint32_t mantissaAndExponent = fp32i & 0x7FFFFFFF;
 
diff --git a/src/dawn/common/Math.h b/src/dawn/common/Math.h
index 8766e7e..1673703 100644
--- a/src/dawn/common/Math.h
+++ b/src/dawn/common/Math.h
@@ -131,14 +131,6 @@
                                       ~(alignment - 1));
 }
 
-template <typename destType, typename sourceType>
-destType BitCast(const sourceType& source) {
-    static_assert(sizeof(destType) == sizeof(sourceType), "BitCast: cannot lose precision.");
-    destType output;
-    std::memcpy(&output, &source, sizeof(destType));
-    return output;
-}
-
 uint16_t Float32ToFloat16(float fp32);
 float Float16ToFloat32(uint16_t fp16);
 bool IsFloat16NaN(uint16_t fp16);