]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/mp11/detail/mp_with_index.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / mp11 / detail / mp_with_index.hpp
index 3eec9b691c61941a5321868dddd84c63475265cf..b6932f2d4f083f8a88084241dbd849965918f571 100644 (file)
@@ -40,27 +40,14 @@ template<std::size_t N> struct mp_with_index_impl_
 {
     template<std::size_t K, class F> static BOOST_MP11_CONSTEXPR14 decltype(std::declval<F>()(std::declval<mp_size_t<0>>())) call( std::size_t i, F && f )
     {
-        switch( i )
+        if( i < N / 2 )
         {
-        case 0: return std::forward<F>(f)( mp_size_t<K+0>() );
-        case 1: return std::forward<F>(f)( mp_size_t<K+1>() );
-        case 2: return std::forward<F>(f)( mp_size_t<K+2>() );
-        case 3: return std::forward<F>(f)( mp_size_t<K+3>() );
-        case 4: return std::forward<F>(f)( mp_size_t<K+4>() );
-        case 5: return std::forward<F>(f)( mp_size_t<K+5>() );
-        case 6: return std::forward<F>(f)( mp_size_t<K+6>() );
-        case 7: return std::forward<F>(f)( mp_size_t<K+7>() );
-        case 8: return std::forward<F>(f)( mp_size_t<K+8>() );
-        case 9: return std::forward<F>(f)( mp_size_t<K+9>() );
-        case 10: return std::forward<F>(f)( mp_size_t<K+10>() );
-        case 11: return std::forward<F>(f)( mp_size_t<K+11>() );
-        case 12: return std::forward<F>(f)( mp_size_t<K+12>() );
-        case 13: return std::forward<F>(f)( mp_size_t<K+13>() );
-        case 14: return std::forward<F>(f)( mp_size_t<K+14>() );
-        case 15: return std::forward<F>(f)( mp_size_t<K+15>() );
+            return mp_with_index_impl_<N/2>::template call<K>( i, std::forward<F>(f) );
+        }
+        else
+        {
+            return mp_with_index_impl_<N-N/2>::template call<K+N/2>( i - N/2, std::forward<F>(f) );
         }
-
-        return mp_with_index_impl_<N-16>::template call<K+16>( i-16, std::forward<F>(f) );
     }
 };