From b30e3353f0363ca9a953ccb922b36b8d03350970 Mon Sep 17 00:00:00 2001 From: Sean McBride Date: Mon, 7 Mar 2022 11:16:43 -0500 Subject: [PATCH] Fixed clang -Wreserved-identifier warings Created FMT_UNCHECKED_TYPE that resolves to special identifier _Unchecked_type for Microsoft, but to a dummy string otherwise. Using _Unchecked_type is invalid because underscore + uppercase is a reserved identifier. --- include/fmt/compile.h | 3 ++- include/fmt/core.h | 8 +++++++- include/fmt/format.h | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/fmt/compile.h b/include/fmt/compile.h index 8ce043f63aaec..cec453f48e2b2 100644 --- a/include/fmt/compile.h +++ b/include/fmt/compile.h @@ -8,6 +8,7 @@ #ifndef FMT_COMPILE_H_ #define FMT_COMPILE_H_ +#include "core.h" #include "format.h" FMT_BEGIN_NAMESPACE @@ -36,7 +37,7 @@ template class truncating_iterator_base { using difference_type = std::ptrdiff_t; using pointer = void; using reference = void; - using _Unchecked_type = + using FMT_UNCHECKED_TYPE = truncating_iterator_base; // Mark iterator as checked. OutputIt base() const { return out_; } diff --git a/include/fmt/core.h b/include/fmt/core.h index 304b1f1d6eed9..8c487b5510249 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -217,6 +217,12 @@ # endif #endif +#ifdef _MSC_VER +# define FMT_UNCHECKED_TYPE _Unchecked_type +#else +# define FMT_UNCHECKED_TYPE DummyName +#endif + #ifndef FMT_BEGIN_NAMESPACE # define FMT_BEGIN_NAMESPACE \ namespace fmt { \ @@ -1498,7 +1504,7 @@ class appender : public std::back_insert_iterator> { public: using std::back_insert_iterator>::back_insert_iterator; appender(base it) noexcept : base(it) {} - using _Unchecked_type = appender; // Mark iterator as checked. + using FMT_UNCHECKED_TYPE = appender; // Mark iterator as checked. auto operator++() noexcept -> appender& { return *this; } diff --git a/include/fmt/format.h b/include/fmt/format.h index d71715498d8c3..4c01ecbdc723a 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1848,7 +1848,7 @@ class counting_iterator { using difference_type = std::ptrdiff_t; using pointer = void; using reference = void; - using _Unchecked_type = counting_iterator; // Mark iterator as checked. + using FMT_UNCHECKED_TYPE = counting_iterator; // Mark iterator as checked. struct value_type { template void operator=(const T&) {}