[libcxx-commits] [PATCH] D75960: [libc++] Implement C++20's P0476r2: std::bit_cast
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Jan 12 14:40:12 PST 2021
ldionne added inline comments.
================
Comment at: libcxx/test/std/numerics/bit/bit.cast/bit_cast.fail.cpp:31
+int main(int, char**)
+{
+ // Not the same size
----------------
zoecarver wrote:
> Maybe a deleted copy constructor?
I think that's covered by the test for a type that isn't trivially copyable. If a type is not copyable, then it is not trivially copyable.
================
Comment at: libcxx/test/std/numerics/bit/bit.cast/bit_cast.pass.cpp:43
+ }
+ assert(__builtin_memcmp(&value1, &value2, sizeof(T)) == 0);
+}
----------------
zoecarver wrote:
> So, in non-constexpr, the only thing you're testing here is that you can cast a pointer to its current type?
I don't understand. In `constexpr` mode, the only thing being tested is that the roundtrip from `T` back to `T` (through `std::bit_cast`) works as expected. I'm only unable to test the intermediate results (the `char` arrays).
However, as of rebasing this patch, it appears that none of it works anymore. So I don't have a way to test `bit_cast` inside `constexpr`.
================
Comment at: libcxx/test/std/numerics/bit/bit.cast/bit_cast.pass.cpp:194
+ 3.141592653589793238462643383279502884197169399375105820974944,
+ std::nanl("")
+ };
----------------
jfb wrote:
> Some of these won't work on all platforms. You'll need to selectively disable some for platforms that don't have IEEE-754 with the expected sizes.
I'll see what CI complains about!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75960/new/
https://reviews.llvm.org/D75960
More information about the libcxx-commits
mailing list