From e7b6840a75f657ae4ffe8b3932fb578ff293140d Mon Sep 17 00:00:00 2001 From: "A. Jiang" Date: Tue, 11 Feb 2025 01:43:18 +0800 Subject: [PATCH] [libc++][test] Fixes for `hash` and value discarding Currently `std::hash::operator()` relies implicit conversion from `int` to `size_t`, which makes MSVC compelling. This PR switches to use `static_cast`. In `flat.map/flat.map.access/at_transparent.pass.cpp`, there's one value-discarding use of `at` that wasn't marked `TEST_IGNORE_NODISCARD`. This PR adds the missing `TEST_IGNORE_NODISCARD`. --- libcxx/test/std/containers/Emplaceable.h | 2 +- .../flat.map/flat.map.access/at_transparent.pass.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libcxx/test/std/containers/Emplaceable.h b/libcxx/test/std/containers/Emplaceable.h index 1a4e14505fb21..001886eece7d7 100644 --- a/libcxx/test/std/containers/Emplaceable.h +++ b/libcxx/test/std/containers/Emplaceable.h @@ -45,7 +45,7 @@ struct std::hash { typedef Emplaceable argument_type; typedef std::size_t result_type; - std::size_t operator()(const Emplaceable& x) const { return x.get(); } + std::size_t operator()(const Emplaceable& x) const { return static_cast(x.get()); } }; #endif // TEST_STD_VER >= 11 diff --git a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.access/at_transparent.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.access/at_transparent.pass.cpp index 13edca915fd00..456f12e0c0d29 100644 --- a/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.access/at_transparent.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/flat.map/flat.map.access/at_transparent.pass.cpp @@ -103,7 +103,7 @@ int main(int, char**) { TransparentComparator c(transparent_used); std::flat_map m(std::sorted_unique, {{1, 1}, {2, 2}, {3, 3}}, c); assert(!transparent_used); - m.at(Transparent{3}); + TEST_IGNORE_NODISCARD m.at(Transparent{3}); assert(transparent_used); }