ports/dns/powerdns-recursor/files/patch-ext_json11_json11.cpp
Carlos J. Puga Medina 28fd6f320b dns/powerdns and dns/powerdns-recursor: unbreak build with clang 4.0
json11.cpp:153:24: error: invalid operands to binary expression ('nullptr_t' and 'nullptr_t')
        return m_value < static_cast<const Value<tag, T> *>(other)->m_value;
               ~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
json11.cpp:209:5: note: in instantiation of member function 'json11::Value<json11::Json::Type::NUL,
      nullptr_t>::less' requested here
    JsonNull() : Value(nullptr) {}
    ^

PR:		216071
Submitted by:	cpm
Reported by:	jbeich
Reviewed by:	jbeich
Approved by:	Ralf van der Enden <tremere@cainites.net> (maintainer)
Obtained from:	upstream
MFH:		2017Q1 (blanket)
2017-01-20 19:38:56 +00:00

37 lines
1 KiB
C++

--- ext/json11/json11.cpp.orig 2017-01-18 18:06:37 UTC
+++ ext/json11/json11.cpp
@@ -37,11 +37,21 @@ using std::make_shared;
using std::initializer_list;
using std::move;
+/* Helper for representing null - just a do-nothing struct, plus comparison
+ * operators so the helpers in JsonValue work. We can't use nullptr_t because
+ * it may not be orderable.
+*/
+
+struct NullStruct {
+ bool operator==(NullStruct) const { return true; }
+ bool operator<(NullStruct) const { return false; }
+};
+
/* * * * * * * * * * * * * * * * * * * *
* Serialization
*/
-static void dump(std::nullptr_t, string &out) {
+static void dump(NullStruct, string &out) {
out += "null";
}
@@ -204,9 +214,9 @@ public:
explicit JsonObject(Json::object &&value) : Value(move(value)) {}
};
-class JsonNull final : public Value<Json::NUL, std::nullptr_t> {
+class JsonNull final : public Value<Json::NUL, NullStruct> {
public:
- JsonNull() : Value(nullptr) {}
+ JsonNull() : Value({}) {}
};
/* * * * * * * * * * * * * * * * * * * *