diff --git a/include/fmt/compile.h b/include/fmt/compile.h index b2bf1ba10465..296ef42c697d 100644 --- a/include/fmt/compile.h +++ b/include/fmt/compile.h @@ -36,8 +36,7 @@ template class truncating_iterator_base { using difference_type = std::ptrdiff_t; using pointer = void; using reference = void; - using _Unchecked_type = - truncating_iterator_base; // Mark iterator as checked. + FMT_UNCHECKED_ITERATOR(truncating_iterator_base); OutputIt base() const { return out_; } size_t count() const { return count_; } diff --git a/include/fmt/core.h b/include/fmt/core.h index 1c81bbd2d980..44cfde3191cb 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -217,6 +217,13 @@ # endif #endif +#ifdef _MSC_VER +# define FMT_UNCHECKED_ITERATOR(It) \ + using _Unchecked_type = It // Mark iterator as checked. +#else +# define FMT_UNCHECKED_ITERATOR(It) using DummyTypeName = It +#endif + #ifndef FMT_BEGIN_NAMESPACE # define FMT_BEGIN_NAMESPACE \ namespace fmt { \ @@ -1498,7 +1505,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. + FMT_UNCHECKED_ITERATOR(appender); auto operator++() noexcept -> appender& { return *this; } diff --git a/include/fmt/format.h b/include/fmt/format.h index 6ed53aa96a4c..89e0079462f0 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1842,7 +1842,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. + FMT_UNCHECKED_ITERATOR(counting_iterator); struct value_type { template void operator=(const T&) {} diff --git a/test/posix-mock-test.cc b/test/posix-mock-test.cc index 8a2214e8b75b..32adbd5055d7 100644 --- a/test/posix-mock-test.cc +++ b/test/posix-mock-test.cc @@ -6,7 +6,7 @@ // For the license information refer to format.h. // Disable bogus MSVC warnings. -#ifndef _CRT_SECURE_NO_WARNINGS +#if !defined(_CRT_SECURE_NO_WARNINGS) && defined(_MSC_VER) # define _CRT_SECURE_NO_WARNINGS #endif diff --git a/test/test-main.cc b/test/test-main.cc index 268ed086815d..39d2789d33c3 100644 --- a/test/test-main.cc +++ b/test/test-main.cc @@ -15,9 +15,6 @@ #ifdef _MSC_VER # include -#else -# define _CrtSetReportFile(a, b) -# define _CrtSetReportMode(a, b) #endif int main(int argc, char** argv) { @@ -28,11 +25,13 @@ int main(int argc, char** argv) { SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); #endif +#ifdef _MSC_VER // Disable message boxes on assertion failures. _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); +#endif try { testing::InitGoogleTest(&argc, argv); testing::FLAGS_gtest_death_test_style = "threadsafe";