Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / gil / concepts / pixel.hpp
index 67b01ab..1b121c8 100644 (file)
 #include <boost/gil/concepts/fwd.hpp>
 #include <boost/gil/concepts/pixel_based.hpp>
 #include <boost/gil/concepts/detail/type_traits.hpp>
-
-#include <boost/type_traits.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/bool.hpp>
+#include <boost/gil/detail/mp11.hpp>
 
 #include <cstddef>
+#include <type_traits>
 
 #if defined(BOOST_CLANG)
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wunused-local-typedefs"
 #endif
 
-#if defined(BOOST_GCC) && (BOOST_GCC >= 40600)
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-local-typedefs"
 #endif
@@ -192,7 +190,7 @@ struct HomogeneousPixelValueConcept
     {
         gil_function_requires<HomogeneousPixelConcept<P>>();
         gil_function_requires<Regular<P>>();
-        static_assert(is_same<P, typename P::value_type>::value, "");
+        static_assert(std::is_same<P, typename P::value_type>::value, "");
     }
 };
 
@@ -200,24 +198,20 @@ namespace detail {
 
 template <typename P1, typename P2, int K>
 struct channels_are_pairwise_compatible
-    : public
-        mpl::and_
+    : mp11::mp_and
+    <
+        channels_are_pairwise_compatible<P1, P2, K - 1>,
+        channels_are_compatible
         <
-            channels_are_pairwise_compatible<P1, P2, K - 1>,
-            channels_are_compatible
-            <
-                typename kth_semantic_element_reference_type<P1, K>::type,
-                typename kth_semantic_element_reference_type<P2, K>::type
-            >
+            typename kth_semantic_element_reference_type<P1, K>::type,
+            typename kth_semantic_element_reference_type<P2, K>::type
         >
+    >
 {
 };
 
 template <typename P1, typename P2>
-struct channels_are_pairwise_compatible<P1, P2, -1>
-    : public mpl::true_
-{
-};
+struct channels_are_pairwise_compatible<P1, P2, -1> : std::true_type {};
 
 } // namespace detail
 
@@ -229,8 +223,7 @@ struct channels_are_pairwise_compatible<P1, P2, -1>
 /// \tparam P2 Models PixelConcept
 template <typename P1, typename P2>
 struct pixels_are_compatible
-    : public
-        mpl::and_
+    : mp11::mp_and
         <
             typename color_spaces_are_compatible
             <
@@ -298,7 +291,7 @@ struct PixelConvertibleConcept
 #pragma clang diagnostic pop
 #endif
 
-#if defined(BOOST_GCC) && (BOOST_GCC >= 40600)
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
 #pragma GCC diagnostic pop
 #endif