mirror of
https://github.com/boostorg/mp11.git
synced 2026-05-05 12:14:13 +02:00
Add mp_cond
This commit is contained in:
@@ -107,6 +107,31 @@ template<bool C, class T, template<class...> class F, class... U> using mp_eval_
|
||||
template<class C, class T, template<class...> class F, class... U> using mp_eval_if = typename detail::mp_eval_if_c_impl<static_cast<bool>(C::value), T, F, U...>::type;
|
||||
template<class C, class T, class Q, class... U> using mp_eval_if_q = typename detail::mp_eval_if_c_impl<static_cast<bool>(C::value), T, Q::template fn, U...>::type;
|
||||
|
||||
// mp_cond
|
||||
|
||||
// so elegant; so doesn't work
|
||||
// template<class C, class T, class... E> using mp_cond = mp_eval_if<C, T, mp_cond, E...>;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template<class C, class T, class... E> struct mp_cond_impl;
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template<class C, class T, class... E> using mp_cond = typename detail::mp_cond_impl<C, T, E...>::type;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template<class C, class T, class... E> using mp_cond_ = mp_eval_if<C, T, mp_cond, E...>;
|
||||
|
||||
template<class C, class T, class... E> struct mp_cond_impl: mp_defer<mp_cond_, C, T, E...>
|
||||
{
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
// mp_quote
|
||||
template<template<class...> class F> struct mp_quote
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user