Skip to content

Commit 9910ada

Browse files
committed
Clang considers the specialization ambiguous in C++17 and above, rewrite. Fixes #103.
1 parent 7ca1e0a commit 9910ada

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

include/boost/mp11/algorithm.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,21 +348,21 @@ template<class L, class N> using mp_drop = mp_drop_c<L, std::size_t{ N::value }>
348348
namespace 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>
368368
template<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

Comments
 (0)