From 04abe38148d99b2a5270521935115d769a714adc Mon Sep 17 00:00:00 2001 From: drgler Date: Sat, 13 Jan 2018 15:28:19 +0100 Subject: [PATCH] Issue #731: Provide new JSONCPP_OP_EXPLICIT macro to restore VS 2012 support after recent introduction of explicit conversion function in JSON::Value. --- include/json/config.h | 8 ++++++++ include/json/value.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/json/config.h b/include/json/config.h index d6bad30..9410449 100644 --- a/include/json/config.h +++ b/include/json/config.h @@ -84,15 +84,23 @@ #if __cplusplus >= 201103L # define JSONCPP_OVERRIDE override # define JSONCPP_NOEXCEPT noexcept +# define JSONCPP_OP_EXPLICIT explicit #elif defined(_MSC_VER) && _MSC_VER > 1600 && _MSC_VER < 1900 # define JSONCPP_OVERRIDE override # define JSONCPP_NOEXCEPT throw() +# if _MSC_VER >= 1800 // MSVC 2013 +# define JSONCPP_OP_EXPLICIT explicit +# else +# define JSONCPP_OP_EXPLICIT +# endif #elif defined(_MSC_VER) && _MSC_VER >= 1900 # define JSONCPP_OVERRIDE override # define JSONCPP_NOEXCEPT noexcept +# define JSONCPP_OP_EXPLICIT explicit #else # define JSONCPP_OVERRIDE # define JSONCPP_NOEXCEPT throw() +# define JSONCPP_OP_EXPLICIT #endif #ifndef JSON_HAS_RVALUE_REFERENCES diff --git a/include/json/value.h b/include/json/value.h index bcf3675..8d049ad 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -408,7 +408,7 @@ Json::Value obj_value(Json::objectValue); // {} bool empty() const; /// Return !isNull() - explicit operator bool() const; + JSONCPP_OP_EXPLICIT operator bool() const; /// Remove all object members and array elements. /// \pre type() is arrayValue, objectValue, or nullValue