[libcxx-commits] [libcxx] [libc++][test] Make narrowing in `nasty_char_traits::to_char_type` more explicit (PR #138375)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri May 2 20:11:41 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: A. Jiang (frederick-vs-ja)

<details>
<summary>Changes</summary>

Previously, the cast was allowed due to [P0960R3](https://wg21.link/p0960r3), which made narrowing implicitly done in the parenthesized aggregate initialization. It seems that MSVC doesn't like such an implicit manner and emits warning C4242.

This patch makes the narrowing more explicit. Follows up #<!-- -->135338.

---
Full diff: https://github.com/llvm/llvm-project/pull/138375.diff


1 Files Affected:

- (modified) libcxx/test/support/nasty_string.h (+1-1) 


``````````diff
diff --git a/libcxx/test/support/nasty_string.h b/libcxx/test/support/nasty_string.h
index c2968f52e3a00..6b17bbc3f2232 100644
--- a/libcxx/test/support/nasty_string.h
+++ b/libcxx/test/support/nasty_string.h
@@ -70,7 +70,7 @@ struct nasty_char_traits {
 
   static constexpr int_type not_eof(int_type c) noexcept { return eq_int_type(c, eof()) ? ~eof() : c; }
 
-  static constexpr char_type to_char_type(int_type c) noexcept { return char_type(c); }
+  static constexpr char_type to_char_type(int_type c) noexcept { return {static_cast<char>(c)}; }
 
   static constexpr int_type to_int_type(char_type c) noexcept { return int_type(c.c); }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/138375


More information about the libcxx-commits mailing list