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;
template <typename T>
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
// 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>
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 {};
// A type-erased reference to an std::locale to avoid a heavy <locale> include.