ac-library: fix tests on platforms where char is unsigned

The type_traits_test asserts `to_unsigned_t<char>` resolves to
`unsigned char`, which only holds on platforms where `char` is signed
(e.g. x86_64-linux). On platforms where `char` is unsigned by default
(e.g. aarch64-linux), `to_unsigned_t<char>` resolves to `char`, and
the static_assert fails to compile.

Guard the assertion with `CHAR_MIN < 0` so the correct relationship
is checked on each platform.

Also drop `-Wno-character-conversion` from NIX_CFLAGS_COMPILE since
GCC 15 does not recognize it (the build log shows it being reported
as an unrecognized command-line option).

Reported upstream: https://github.com/atcoder/ac-library/issues/191

ZHF: #516381
This commit is contained in:
Chahatpreet Singh
2026-05-08 21:14:09 +00:00
parent 21723e75b5
commit c6ddfcd3f6
2 changed files with 30 additions and 2 deletions
@@ -0,0 +1,24 @@
diff --git i/test/unittest/type_traits_test.cpp w/test/unittest/type_traits_test.cpp
index 164cc79..123b3a2 100644
--- i/test/unittest/type_traits_test.cpp
+++ w/test/unittest/type_traits_test.cpp
@@ -1,5 +1,6 @@
#include "atcoder/internal_type_traits"
+#include <climits>
#include <type_traits>
#include <gtest/gtest.h>
@@ -44,7 +45,12 @@ static_assert(internal::is_unsigned_int<unsigned long long>::value, "");
static_assert(!internal::is_signed_int<A>::value, "");
static_assert(!internal::is_unsigned_int<A>::value, "");
+#if CHAR_MIN < 0
static_assert(is_same<unsigned char, internal::to_unsigned_t<char>>::value, "");
+#else
+static_assert(is_same<char, internal::to_unsigned_t<char>>::value, "");
+#endif
+
static_assert(
is_same<unsigned char, internal::to_unsigned_t<signed char>>::value,
"");
+6 -2
View File
@@ -18,7 +18,12 @@ stdenv.mkDerivation (finalAttrs: {
fetchSubmodules = true;
hash = "sha256-1wwzN/JPS6daj1vDFuEN5z20tMdLfMvEKti0sxCVlHA=";
};
patches = [
# Fix type_traits_test assumptions about char signedness on platforms
# where char is unsigned by default (e.g. aarch64-linux).
# Reported upstream: https://github.com/atcoder/ac-library/issues/191
./fix-char-signedness-tests.patch
];
outputs = [
"dev"
"out"
@@ -60,7 +65,6 @@ stdenv.mkDerivation (finalAttrs: {
env = {
NIX_CFLAGS_COMPILE = toString [
"-Wno-error=array-bounds"
"-Wno-character-conversion"
];
};