Fix gcc 8.1 - 8.3 bug and compilation (#4131)

Fixes issue #4129
This commit is contained in:
Justin Riddell 2024-08-28 19:25:39 +01:00 committed by GitHub
parent e3676ca309
commit a3f3f2ec9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -332,6 +332,7 @@ template <typename T>
using make_unsigned_t = typename std::make_unsigned<T>::type; using make_unsigned_t = typename std::make_unsigned<T>::type;
template <typename T> template <typename T>
using underlying_t = typename std::underlying_type<T>::type; using underlying_t = typename std::underlying_type<T>::type;
template <typename T> using decay_t = typename std::decay<T>::type;
#if FMT_GCC_VERSION && FMT_GCC_VERSION < 500 #if FMT_GCC_VERSION && FMT_GCC_VERSION < 500
// A workaround for gcc 4.8 to make void_t work in a SFINAE context. // A workaround for gcc 4.8 to make void_t work in a SFINAE context.
@ -1580,7 +1581,8 @@ template <> struct is_output_iterator<appender, char> : std::true_type {};
template <typename It, typename T> template <typename It, typename T>
struct is_output_iterator< struct is_output_iterator<
It, T, void_t<decltype(*std::declval<It&>()++ = std::declval<T>())>> It, T,
void_t<decltype(*std::declval<decay_t<It>&>()++ = std::declval<T>())>>
: std::true_type {}; : std::true_type {};
// A type-erased reference to an std::locale to avoid a heavy <locale> include. // A type-erased reference to an std::locale to avoid a heavy <locale> include.