Issue #731: Provide new JSONCPP_OP_EXPLICIT macro to restore VS 2012 support after recent introduction of explicit conversion function in JSON::Value.
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 @@
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