Add simple any_of/all_of implementation for C++17
diff --git a/include/pybind11/common.h b/include/pybind11/common.h
index 254fbad..bfc5f13 100644
--- a/include/pybind11/common.h
+++ b/include/pybind11/common.h
@@ -385,7 +385,10 @@
#endif
/// Compile-time all/any/none of that check the ::value of all template types
-#if !defined(_MSC_VER)
+#ifdef PYBIND11_CPP17
+template <class... Ts> using all_of = bool_constant<(Ts::value && ...)>;
+template <class... Ts> using any_of = bool_constant<(Ts::value || ...)>;
+#elif !defined(_MSC_VER)
template <bool...> struct bools {};
template <class... Ts> using all_of = std::is_same<
bools<Ts::value..., true>,