Fix handling of formattable types implicitly convertible to pointers

This commit is contained in:
Victor Zverovich
2022-01-14 13:08:14 -08:00
parent b02e5af52c
commit 8f8a1a02d5
2 changed files with 23 additions and 3 deletions

View File

@@ -1398,10 +1398,11 @@ template <typename Context> struct arg_mapper {
template <
typename T,
FMT_ENABLE_IF(
std::is_member_pointer<T>::value ||
std::is_pointer<T>::value || std::is_member_pointer<T>::value ||
std::is_function<typename std::remove_pointer<T>::type>::value ||
(std::is_convertible<const T&, const void*>::value &&
!std::is_convertible<const T&, const char_type*>::value))>
!std::is_convertible<const T&, const char_type*>::value &&
!has_formatter<T, Context>::value))>
FMT_CONSTEXPR auto map(const T&) -> unformattable_pointer {
return {};
}