Improve PYBIND11_DEPRECATED by showing the message on all compilers
GCC supports `deprecated(msg)` since v4.5 and VS supports the standard
[[deprecated(msg)]] since 2015 RTM.
The deprecated constructor change from `= default` to `{}` is
a workaround for a VS2015 bug.
diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h
index bcd69a8..25c7cb3 100644
--- a/include/pybind11/attr.h
+++ b/include/pybind11/attr.h
@@ -58,7 +58,7 @@
handle value;
PYBIND11_DEPRECATED("py::metaclass() is no longer required. It's turned on by default now.")
- metaclass() = default;
+ metaclass() {}
/// Override pybind11's default metaclass
explicit metaclass(handle value) : value(value) { }
diff --git a/include/pybind11/common.h b/include/pybind11/common.h
index 6df39f8..58fc205 100644
--- a/include/pybind11/common.h
+++ b/include/pybind11/common.h
@@ -69,14 +69,10 @@
# define PYBIND11_NOINLINE __attribute__ ((noinline))
#endif
-#if defined(PYBIND11_CPP14)
+#if defined(PYBIND11_CPP14) || defined(_MSC_VER)
# define PYBIND11_DEPRECATED(reason) [[deprecated(reason)]]
-#elif defined(__clang__)
+#else
# define PYBIND11_DEPRECATED(reason) __attribute__((deprecated(reason)))
-#elif defined(__GNUG__)
-# define PYBIND11_DEPRECATED(reason) __attribute__((deprecated))
-#elif defined(_MSC_VER)
-# define PYBIND11_DEPRECATED(reason) __declspec(deprecated)
#endif
#define PYBIND11_VERSION_MAJOR 2