summaryrefslogtreecommitdiff
path: root/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch')
-rw-r--r--dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch76
1 files changed, 0 insertions, 76 deletions
diff --git a/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch b/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch
deleted file mode 100644
index 9f29d7fb111c..000000000000
--- a/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-https://github.com/fmtlib/fmt/commit/8f8a1a02d5c5cb967d240feee3ffac00d66f22a2.patch
-https://github.com/facebook/folly/issues/1705
-
-From 8f8a1a02d5c5cb967d240feee3ffac00d66f22a2 Mon Sep 17 00:00:00 2001
-From: Victor Zverovich <viz@fb.com>
-Date: Fri, 14 Jan 2022 13:08:14 -0800
-Subject: [PATCH] Fix handling of formattable types implicitly convertible to
- pointers
-
----
- include/fmt/core.h | 5 +++--
- test/core-test.cc | 21 ++++++++++++++++++++-
- 2 files changed, 23 insertions(+), 3 deletions(-)
-
-diff --git a/include/fmt/core.h b/include/fmt/core.h
-index f2d21e5c5a..12571ce0da 100644
---- a/include/fmt/core.h
-+++ b/include/fmt/core.h
-@@ -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 {};
- }
-diff --git a/test/core-test.cc b/test/core-test.cc
-index b2f2097ea1..c9eea8ffd8 100644
---- a/test/core-test.cc
-+++ b/test/core-test.cc
-@@ -737,6 +737,24 @@ struct convertible_to_pointer {
- operator const int*() const { return nullptr; }
- };
-
-+struct convertible_to_pointer_formattable {
-+ operator const int*() const { return nullptr; }
-+};
-+
-+FMT_BEGIN_NAMESPACE
-+template <> struct formatter<convertible_to_pointer_formattable> {
-+ auto parse(format_parse_context& ctx) -> decltype(ctx.begin()) {
-+ return ctx.begin();
-+ }
-+
-+ auto format(convertible_to_pointer_formattable, format_context& ctx) const
-+ -> decltype(ctx.out()) {
-+ auto test = string_view("test");
-+ return std::copy_n(test.data(), test.size(), ctx.out());
-+ }
-+};
-+FMT_END_NAMESPACE
-+
- enum class test_scoped_enum {};
-
- TEST(core_test, is_formattable) {
-@@ -770,11 +788,12 @@ TEST(core_test, is_formattable) {
- #endif
-
- static_assert(!fmt::is_formattable<convertible_to_pointer>::value, "");
-+ const auto f = convertible_to_pointer_formattable();
-+ EXPECT_EQ(fmt::format("{}", f), "test");
-
- static_assert(!fmt::is_formattable<void (*)()>::value, "");
-
- struct s;
--
- static_assert(!fmt::is_formattable<int(s::*)>::value, "");
- static_assert(!fmt::is_formattable<int (s::*)()>::value, "");
- static_assert(!fmt::is_formattable<test_scoped_enum>::value, "");
-