+# define CLANG_DIAGNOSTIC_RESET
+#endif
+
+#ifdef _MSC_VER
+# define MSVC_DIAGNOSTIC_IGNORE(id) __pragma(warning(push)) __pragma(warning(disable : id))
+# define MSVC_DIAGNOSTIC_RESET __pragma(warning(pop))
+#else
+//! Ignore specified MSVC warning until MSVC_DIAGNOSTIC_RESET
+# define MSVC_DIAGNOSTIC_IGNORE(warning)
+//! Reset all diagnostics to default
+# define MSVC_DIAGNOSTIC_RESET