#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
{
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, "");
}
};
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
/// \tparam P2 Models PixelConcept
template <typename P1, typename P2>
struct pixels_are_compatible
- : public
- mpl::and_
+ : mp11::mp_and
<
typename color_spaces_are_compatible
<
#pragma clang diagnostic pop
#endif
-#if defined(BOOST_GCC) && (BOOST_GCC >= 40600)
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
#pragma GCC diagnostic pop
#endif