From d84e0a28d6aebe3a8f499bc7b80af37117b45d07 Mon Sep 17 00:00:00 2001 From: Sven Fink Date: Mon, 10 Feb 2020 13:51:48 +0100 Subject: [PATCH] Allow create validator from rvalue json --- src/json-validator.cpp | 10 ++++++++-- src/nlohmann/json-schema.hpp | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/json-validator.cpp b/src/json-validator.cpp index 8fc4b5a..b84c026 100644 --- a/src/json-validator.cpp +++ b/src/json-validator.cpp @@ -1129,16 +1129,22 @@ namespace json_schema json_validator::json_validator(schema_loader loader, format_checker format) - : root_(std::unique_ptr(new root_schema(loader, format))) + : root_(std::unique_ptr(new root_schema(std::move(loader), std::move(format)))) { } json_validator::json_validator(const json &schema, schema_loader loader, format_checker format) - : json_validator(loader, format) + : json_validator(std::move(loader), std::move(format)) { set_root_schema(schema); } +json_validator::json_validator(json &&schema, schema_loader loader, format_checker format) + : json_validator(std::move(loader), std::move(format)) +{ + set_root_schema(std::move(schema)); +} + // move constructor, destructor and move assignment operator can be defaulted here // where root_schema is a complete type json_validator::json_validator(json_validator &&) = default; diff --git a/src/nlohmann/json-schema.hpp b/src/nlohmann/json-schema.hpp index d6e0ede..a1794cf 100644 --- a/src/nlohmann/json-schema.hpp +++ b/src/nlohmann/json-schema.hpp @@ -171,6 +171,7 @@ public: json_validator(schema_loader = nullptr, format_checker = nullptr); json_validator(json_validator &&); json_validator(const json &, schema_loader = nullptr, format_checker = nullptr); + json_validator(json &&, schema_loader = nullptr, format_checker = nullptr); ~json_validator(); json_validator &operator=(json_validator &&);