mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-07 08:31:16 +00:00
a07627b1f8
Problem: - On Apple clang version 11.0.3 (clang-1103.0.32.62) in C++17 and C++20 mode, clang 11.0.0 in C++17 and C++20 mode, and clang 9.0.1 in C++17 mode, the following error is generated: In file included from test/compile-test.cc:16: include/fmt/compile.h:518:25: error: implicit conversion changes signedness: 'long' to 'unsigned long' [-Werror,-Wsign-conversion] return {f, pos + (end - str.data()) + 1, ctx.next_arg_id()}; ~ ~~~~^~~~~~~~~~~~ include/fmt/compile.h:538:31: note: in instantiation of function template specialization 'fmt::v7::detail::parse_specs<int, char>' requested here constexpr auto result = parse_specs<id_type>(str, POS + 2, ID); ^ include/fmt/compile.h:569:17: note: in instantiation of function template specialization 'fmt::v7::detail::compile_format_string<fmt::v7::detail::type_list<int>, 0, 0, FMT_COMPILE_STRING>' requested here detail::compile_format_string<detail::type_list<Args...>, 0, 0>( ^ include/fmt/compile.h:648:37: note: in instantiation of function template specialization 'fmt::v7::detail::compile<int, FMT_COMPILE_STRING, 0>' requested here constexpr auto compiled = detail::compile<Args...>(S()); ^ test/compile-test.cc:140:24: note: in instantiation of function template specialization 'fmt::v7::format<FMT_COMPILE_STRING, int, 0>' requested here EXPECT_EQ("42", fmt::format(FMT_COMPILE("{:x}"), 0x42)); ^ In file included from test/compile-test.cc:16: include/fmt/compile.h:518:25: error: implicit conversion changes signedness: 'long' to 'unsigned long' [-Werror,-Wsign-conversion] return {f, pos + (end - str.data()) + 1, ctx.next_arg_id()}; ~ ~~~~^~~~~~~~~~~~ include/fmt/compile.h:538:31: note: in instantiation of function template specialization 'fmt::v7::detail::parse_specs<char [4], char>' requested here constexpr auto result = parse_specs<id_type>(str, POS + 2, ID); ^ include/fmt/compile.h:494:27: note: in instantiation of function template specialization 'fmt::v7::detail::compile_format_string<fmt::v7::detail::type_list<int, int, char const (&)[4], int>, 5, 2, FMT_COMPILE_STRING>' requested here constexpr auto tail = compile_format_string<Args, POS, ID>(format_str); ^ include/fmt/compile.h:539:14: note: in instantiation of function template specialization 'fmt::v7::detail::parse_tail<fmt::v7::detail::type_list<int, int, char const (&)[4], int>, 5, 2, fmt::v7::detail::spec_field<char, int, 0>, FMT_COMPILE_STRING>' requested here return parse_tail<Args, result.end, result.next_arg_id>( ^ include/fmt/compile.h:569:17: note: in instantiation of function template specialization 'fmt::v7::detail::compile_format_string<fmt::v7::detail::type_list<int, int, char const (&)[4], int>, 0, 0, FMT_COMPILE_STRING>' requested here detail::compile_format_string<detail::type_list<Args...>, 0, 0>( ^ include/fmt/compile.h:648:37: note: in instantiation of function template specialization 'fmt::v7::detail::compile<int, int, char const (&)[4], int, FMT_COMPILE_STRING, 0>' requested here constexpr auto compiled = detail::compile<Args...>(S()); ^ test/compile-test.cc:145:18: note: in instantiation of function template specialization 'fmt::v7::format<FMT_COMPILE_STRING, int, int, char const (&)[4], int, 0>' requested here fmt::format(FMT_COMPILE("{:{}}{:{}}"), 42, 4, "foo", 5)); ^ 2 errors generated. Solution: - Explicitly cast the result of the subtraction to the (unsigned) outer type. Co-authored-by: Jonathan Gopel <jgopel@quantlab.com> |
||
---|---|---|
.. | ||
fmt |