diff --git a/include/boost/mp11/utility.hpp b/include/boost/mp11/utility.hpp index 213857d..b41d334 100644 --- a/include/boost/mp11/utility.hpp +++ b/include/boost/mp11/utility.hpp @@ -20,7 +20,10 @@ template struct mp_identity // mp_inherit template struct mp_inherit: T... {}; -// mp_if +// mp_if, mp_if_c +namespace detail +{ + template struct mp_if_c_impl; template struct mp_if_c_impl @@ -33,11 +36,15 @@ template struct mp_if_c_impl using type = E; }; -template using mp_if_c = typename mp_if_c_impl::type; +} // namespace detail -template using mp_if = typename mp_if_c_impl( C::value ), T, E>::type; +template using mp_if_c = typename detail::mp_if_c_impl::type; +template using mp_if = typename detail::mp_if_c_impl(C::value), T, E>::type; + +// mp_eval_if, mp_eval_if_c +namespace detail +{ -// mp_eval_if template class F, class... U> struct mp_eval_if_c_impl; template class F, class... U> struct mp_eval_if_c_impl @@ -50,9 +57,14 @@ template class F, class... U> struct mp_eval_if_c_im using type = F; }; -template class F, class... U> using mp_eval_if_c = typename mp_eval_if_c_impl::type; +} // namespace detail -template class F, class... U> using mp_eval_if = typename mp_eval_if_c_impl( C::value ), T, F, U...>::type; +template class F, class... U> using mp_eval_if_c = typename detail::mp_eval_if_c_impl::type; +template class F, class... U> using mp_eval_if = typename detail::mp_eval_if_c_impl(C::value), T, F, U...>::type; + +// mp_valid +// mp_defer +// mp_defer_if_valid } // namespace boost