Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / gil / premultiply.hpp
index e9efa65..530719c 100644 (file)
@@ -9,10 +9,11 @@
 #define BOOST_GIL_PREMULTIPLY_HPP
 
 #include <boost/gil/rgba.hpp>
+#include <boost/gil/detail/mp11.hpp>
 
 #include <boost/core/ignore_unused.hpp>
-#include <boost/mpl/for_each.hpp>
-#include <boost/mpl/remove.hpp>
+
+#include <type_traits>
 
 namespace boost { namespace gil {
 
@@ -38,13 +39,13 @@ struct channel_premultiply
 namespace detail
 {
     template <typename SrcP, typename DstP>
-    void assign_alpha_if(mpl::true_, SrcP const &src, DstP &dst)
+    void assign_alpha_if(std::true_type, SrcP const &src, DstP &dst)
     {
         get_color(dst,alpha_t()) = alpha_or_max(src);
     }
 
     template <typename SrcP, typename DstP>
-    void assign_alpha_if(mpl::false_, SrcP const& src, DstP& dst)
+    void assign_alpha_if(std::false_type, SrcP const& src, DstP& dst)
     {
         // nothing to do
         boost::ignore_unused(src);
@@ -59,10 +60,10 @@ struct premultiply
     {
         using src_colour_space_t = typename color_space_type<SrcP>::type;
         using dst_colour_space_t = typename color_space_type<DstP>::type;
-        using src_colour_channels = typename mpl::remove <src_colour_space_t, alpha_t>::type;
+        using src_colour_channels = mp11::mp_remove<src_colour_space_t, alpha_t>;
 
-        using has_alpha_t = mpl::bool_<mpl::contains<dst_colour_space_t, alpha_t>::value>;
-        mpl::for_each<src_colour_channels>(channel_premultiply<SrcP, DstP>(src, dst));
+        using has_alpha_t = std::integral_constant<bool, mp11::mp_contains<dst_colour_space_t, alpha_t>::value>;
+        mp11::mp_for_each<src_colour_channels>(channel_premultiply<SrcP, DstP>(src, dst));
         detail::assign_alpha_if(has_alpha_t(), src, dst);
     }
 };