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>,