diff --git a/include/fmt/core.h b/include/fmt/core.h index 68aa5722..34cd7b3c 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -89,7 +89,8 @@ # endif #endif -#if FMT_HAS_FEATURE(cxx_explicit_conversions) || FMT_MSC_VER >= 1800 +#if FMT_HAS_FEATURE(cxx_explicit_conversions) || \ + FMT_GCC_VERSION >= 405 || FMT_MSC_VER >= 1800 # define FMT_EXPLICIT explicit #else # define FMT_EXPLICIT diff --git a/include/fmt/format.h b/include/fmt/format.h index 58c379c7..62e1799d 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -2164,7 +2164,8 @@ FMT_CONSTEXPR void parse_format_string( } Handler &handler_; } write{handler}; - auto begin = format_str.data(), end = begin + format_str.size(); + auto begin = format_str.data(); + auto end = begin + format_str.size(); while (begin != end) { // Doing two passes with memchr (one for '{' and another for '}') is up to // 2.5x faster than the naive one-pass implementation on big format strings. diff --git a/test/format-test.cc b/test/format-test.cc index 8dbb4dfb..ffcab726 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1583,7 +1583,7 @@ struct explicitly_convertible_to_string_like { typename String, typename = typename std::enable_if< std::is_constructible::value>::type> - explicit operator String() const { return String("foo", 3u); } + FMT_EXPLICIT operator String() const { return String("foo", 3u); } }; TEST(FormatterTest, FormatExplicitlyConvertibleToStringLike) {