From b3a4f28ad186a33e1aa2a0a8af6273b476d3bb59 Mon Sep 17 00:00:00 2001 From: Jonathan Gopel Date: Thu, 29 Oct 2020 07:26:18 -0600 Subject: [PATCH] Fix implicit signedness conversion warning (#1963) Problem: - On Apple clang 11.0.3 (clang-1103.0.32.62), pedantic mode compilation generates the following error: test/std-format-test.cc:114:22: error: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Werror,-Wsign-conversion] width_arg_id = c - '0'; ~ ~~^~~~~ Solution: - Use a `to_unsigned` to make the conversion explicit. This is guaranteed to be safe due to the check before the ASCII-to-int conversion. --- test/std-format-test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/std-format-test.cc b/test/std-format-test.cc index 8bf4b6d1..b305ad85 100644 --- a/test/std-format-test.cc +++ b/test/std-format-test.cc @@ -111,7 +111,7 @@ template <> struct std::formatter { char c = get_char(); if (!isdigit(c) || (++iter, get_char()) != '}') throw format_error("invalid format"); - width_arg_id = c - '0'; + width_arg_id = fmt::detail::to_unsigned(c - '0'); ctx.check_arg_id(width_arg_id); return ++iter; }