[upstream_utils] Fix fmt compilation errors on Windows (#5948)

Using `this->` in decltype doesn't work in the latest MSVC.
This commit is contained in:
Peter Johnson
2023-11-21 08:16:30 -08:00
committed by GitHub
parent 0ca1e9b5f9
commit bdc8620d55
5 changed files with 46 additions and 6 deletions

View File

@@ -1435,7 +1435,7 @@ template <typename Context> struct arg_mapper {
// Only map owning types because mapping views can be unsafe.
template <typename T, typename U = format_as_t<T>,
FMT_ENABLE_IF(std::is_arithmetic<U>::value)>
FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(this->map(U())) {
FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(map(U())) {
return map(format_as(val));
}
@@ -1459,13 +1459,13 @@ template <typename Context> struct arg_mapper {
!is_string<U>::value && !is_char<U>::value &&
!is_named_arg<U>::value &&
!std::is_arithmetic<format_as_t<U>>::value)>
FMT_CONSTEXPR FMT_INLINE auto map(T& val) -> decltype(this->do_map(val)) {
FMT_CONSTEXPR FMT_INLINE auto map(T& val) -> decltype(do_map(val)) {
return do_map(val);
}
template <typename T, FMT_ENABLE_IF(is_named_arg<T>::value)>
FMT_CONSTEXPR FMT_INLINE auto map(const T& named_arg)
-> decltype(this->map(named_arg.value)) {
-> decltype(map(named_arg.value)) {
return map(named_arg.value);
}