Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / gil / step_iterator.hpp
index c4d97f5..e882fea 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <cstddef>
 #include <iterator>
+#include <type_traits>
 
 namespace boost { namespace gil {
 
@@ -164,12 +165,12 @@ public:
 };
 
 template <typename Iterator>
-struct const_iterator_type<memory_based_step_iterator<Iterator> > {
+struct const_iterator_type<memory_based_step_iterator<Iterator>> {
     using type = memory_based_step_iterator<typename const_iterator_type<Iterator>::type>;
 };
 
 template <typename Iterator>
-struct iterator_is_mutable<memory_based_step_iterator<Iterator> > : public iterator_is_mutable<Iterator> {};
+struct iterator_is_mutable<memory_based_step_iterator<Iterator>> : public iterator_is_mutable<Iterator> {};
 
 
 /////////////////////////////
@@ -177,15 +178,17 @@ struct iterator_is_mutable<memory_based_step_iterator<Iterator> > : public itera
 /////////////////////////////
 
 template <typename Iterator>
-struct is_iterator_adaptor<memory_based_step_iterator<Iterator> > : public mpl::true_{};
+struct is_iterator_adaptor<memory_based_step_iterator<Iterator>> : std::true_type {};
 
 template <typename Iterator>
-struct iterator_adaptor_get_base<memory_based_step_iterator<Iterator> > {
+struct iterator_adaptor_get_base<memory_based_step_iterator<Iterator>>
+{
     using type = Iterator;
 };
 
 template <typename Iterator, typename NewBaseIterator>
-struct iterator_adaptor_rebind<memory_based_step_iterator<Iterator>,NewBaseIterator> {
+struct iterator_adaptor_rebind<memory_based_step_iterator<Iterator>, NewBaseIterator>
+{
     using type = memory_based_step_iterator<NewBaseIterator>;
 };
 
@@ -194,22 +197,22 @@ struct iterator_adaptor_rebind<memory_based_step_iterator<Iterator>,NewBaseItera
 /////////////////////////////
 
 template <typename Iterator>
-struct color_space_type<memory_based_step_iterator<Iterator> > : public color_space_type<Iterator> {};
+struct color_space_type<memory_based_step_iterator<Iterator>> : public color_space_type<Iterator> {};
 
 template <typename Iterator>
-struct channel_mapping_type<memory_based_step_iterator<Iterator> > : public channel_mapping_type<Iterator> {};
+struct channel_mapping_type<memory_based_step_iterator<Iterator>> : public channel_mapping_type<Iterator> {};
 
 template <typename Iterator>
-struct is_planar<memory_based_step_iterator<Iterator> > : public is_planar<Iterator> {};
+struct is_planar<memory_based_step_iterator<Iterator>> : public is_planar<Iterator> {};
 
 template <typename Iterator>
-struct channel_type<memory_based_step_iterator<Iterator> > : public channel_type<Iterator> {};
+struct channel_type<memory_based_step_iterator<Iterator>> : public channel_type<Iterator> {};
 
 /////////////////////////////
 //  MemoryBasedIteratorConcept
 /////////////////////////////
 template <typename Iterator>
-struct byte_to_memunit<memory_based_step_iterator<Iterator> > : public byte_to_memunit<Iterator> {};
+struct byte_to_memunit<memory_based_step_iterator<Iterator>> : public byte_to_memunit<Iterator> {};
 
 template <typename Iterator>
 inline std::ptrdiff_t memunit_step(const memory_based_step_iterator<Iterator>& p) { return p.step(); }
@@ -245,7 +248,7 @@ memunit_advanced_ref(const memory_based_step_iterator<Iterator>& p,
 /////////////////////////////
 
 template <typename Iterator>
-struct dynamic_x_step_type<memory_based_step_iterator<Iterator> > {
+struct dynamic_x_step_type<memory_based_step_iterator<Iterator>> {
     using type = memory_based_step_iterator<Iterator>;
 };
 
@@ -269,22 +272,32 @@ namespace detail {
 
 // if the iterator is a plain base iterator (non-adaptor), wraps it in memory_based_step_iterator
 template <typename I>
-typename dynamic_x_step_type<I>::type make_step_iterator_impl(const I& it, std::ptrdiff_t step, mpl::false_) {
+auto make_step_iterator_impl(I const& it, std::ptrdiff_t step, std::false_type)
+    -> typename dynamic_x_step_type<I>::type
+{
     return memory_based_step_iterator<I>(it, step);
 }
 
 // If the iterator is compound, put the step in its base
 template <typename I>
-typename dynamic_x_step_type<I>::type make_step_iterator_impl(const I& it, std::ptrdiff_t step, mpl::true_) {
+auto make_step_iterator_impl(I const& it, std::ptrdiff_t step, std::true_type)
+    -> typename dynamic_x_step_type<I>::type
+{
     return make_step_iterator(it.base(), step);
 }
 
 // If the iterator is memory_based_step_iterator, change the step
 template <typename BaseIt>
-memory_based_step_iterator<BaseIt> make_step_iterator_impl(const memory_based_step_iterator<BaseIt>& it, std::ptrdiff_t step, mpl::true_) {
+auto make_step_iterator_impl(
+    memory_based_step_iterator<BaseIt> const& it,
+    std::ptrdiff_t step,
+    std::true_type)
+    -> memory_based_step_iterator<BaseIt>
+{
     return memory_based_step_iterator<BaseIt>(it.base(), step);
 }
-}
+
+} // namespace detail
 
 /// \brief Constructs a step iterator from a base iterator and a step.
 ///