@@ -348,21 +348,21 @@ template<class L, class N> using mp_drop = mp_drop_c<L, std::size_t{ N::value }>
348348namespace detail
349349{
350350
351- template <class S , class F > struct mp_from_sequence_impl ;
351+ template <class S , class F , bool Z > struct mp_from_sequence_impl ;
352352
353- template <template <class T , T... I> class S , class U , U... J, class F > struct mp_from_sequence_impl <S<U, J...>, F>
353+ template <template <class T , T... I> class S , class U , U... J, class F > struct mp_from_sequence_impl <S<U, J...>, F, false >
354354{
355355 using type = mp_list_c<U, (F::value + J)...>;
356356};
357357
358- template <template <class T , T... I> class S , class U , U... J> struct mp_from_sequence_impl <S<U, J...>, mp_int< 0 > >
358+ template <template <class T , T... I> class S , class U , U... J, class F > struct mp_from_sequence_impl <S<U, J...>, F, true >
359359{
360360 using type = mp_list_c<U, J...>;
361361};
362362
363363} // namespace detail
364364
365- template <class S , class F = mp_int<0 >> using mp_from_sequence = typename detail::mp_from_sequence_impl<S, F>::type;
365+ template <class S , class F = mp_int<0 >> using mp_from_sequence = typename detail::mp_from_sequence_impl<S, F, (F::value == 0 ) >::type;
366366
367367// mp_iota(_c)<N, F>
368368template <std::size_t N, std::size_t F = 0 > using mp_iota_c = mp_from_sequence<make_index_sequence<N>, mp_size_t <F>>;
0 commit comments