Add mp_all_of_q, mp_any_of_q, mp_none_of_q

This commit is contained in:
Peter Dimov
2017-10-22 02:50:29 +03:00
parent 0f5c50b195
commit df8217ce97
6 changed files with 231 additions and 0 deletions

View File

@@ -868,12 +868,15 @@ template<class L> using mp_unique = typename detail::mp_unique_impl<L>::type;
// mp_all_of<L, P>
template<class L, template<class...> class P> using mp_all_of = mp_bool< mp_count_if<L, P>::value == mp_size<L>::value >;
template<class L, class Q> using mp_all_of_q = mp_all_of<L, Q::template fn>;
// mp_none_of<L, P>
template<class L, template<class...> class P> using mp_none_of = mp_bool< mp_count_if<L, P>::value == 0 >;
template<class L, class Q> using mp_none_of_q = mp_none_of<L, Q::template fn>;
// mp_any_of<L, P>
template<class L, template<class...> class P> using mp_any_of = mp_bool< mp_count_if<L, P>::value != 0 >;
template<class L, class Q> using mp_any_of_q = mp_any_of<L, Q::template fn>;
// mp_replace_at_c<L, I, W>
namespace detail