forked from boostorg/mp11
Add mp_eval_if_q
This commit is contained in:
+25
-11
@@ -86,13 +86,15 @@
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_identity_t"><code class="computeroutput"><span class="identifier">mp_identity</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_identity_t_t"><code class="computeroutput"><span class="identifier">mp_identity_t</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_inherit_t"><code class="computeroutput"><span class="identifier">mp_inherit</span><span class="special"><</span><span class="identifier">T</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_if_c_b_t_e"><code class="computeroutput"><span class="identifier">mp_if_c</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_if_c_c_t_e"><code class="computeroutput"><span class="identifier">mp_if_c</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_if_c_t_e"><code class="computeroutput"><span class="identifier">mp_if</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span>
|
||||
<span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_eval_if_c_b_t_f_u"><code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_eval_if_c_c_t_f_u"><code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_eval_if_c_t_f_u"><code class="computeroutput"><span class="identifier">mp_eval_if</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_eval_if_q_c_t_q_u"><code class="computeroutput"><span class="identifier">mp_eval_if_q</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Q</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_valid_f_t"><code class="computeroutput"><span class="identifier">mp_valid</span><span class="special"><</span><span class="identifier">F</span><span class="special">,</span> <span class="identifier">T</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_defer_f_t"><code class="computeroutput"><span class="identifier">mp_defer</span><span class="special"><</span><span class="identifier">F</span><span class="special">,</span> <span class="identifier">T</span><span class="special">...></span></code></a></span></dt>
|
||||
<dt><span class="section"><a href="mp11.html#mp11.reference.utility.mp_quote_f"><code class="computeroutput"><span class="identifier">mp_quote</span><span class="special"><</span><span class="identifier">F</span><span class="special">></span></code></a></span></dt>
|
||||
@@ -1308,7 +1310,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="mp11.reference.utility.mp_if_c_b_t_e"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_if_c_b_t_e" title="mp_if_c<B, T, E...>"><code class="computeroutput"><span class="identifier">mp_if_c</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a>
|
||||
<a name="mp11.reference.utility.mp_if_c_c_t_e"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_if_c_c_t_e" title="mp_if_c<C, T, E...>"><code class="computeroutput"><span class="identifier">mp_if_c</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a>
|
||||
</h4></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">bool</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">E</span><span class="special">></span> <span class="keyword">using</span> <span class="identifier">mp_if_c</span> <span class="special">=</span> <span class="comment">/*...*/</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -1325,10 +1327,10 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="mp11.reference.utility.mp_if_c_t_e"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_if_c_t_e" title="mp_if<C, T, E>"><code class="computeroutput"><span class="identifier">mp_if</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span>
|
||||
<span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">></span></code></a>
|
||||
<a name="mp11.reference.utility.mp_if_c_t_e"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_if_c_t_e" title="mp_if<C, T, E...>"><code class="computeroutput"><span class="identifier">mp_if</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span>
|
||||
<span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...></span></code></a>
|
||||
</h4></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">E</span><span class="special">></span> <span class="keyword">using</span> <span class="identifier">mp_if</span> <span class="special">=</span> <span class="identifier">mp_if_c</span><span class="special"><</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">bool</span><span class="special">>(</span><span class="identifier">C</span><span class="special">::</span><span class="identifier">value</span><span class="special">),</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">>;</span>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">E</span><span class="special">...></span> <span class="keyword">using</span> <span class="identifier">mp_if</span> <span class="special">=</span> <span class="identifier">mp_if_c</span><span class="special"><</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">bool</span><span class="special">>(</span><span class="identifier">C</span><span class="special">::</span><span class="identifier">value</span><span class="special">),</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">E</span><span class="special">...>;</span>
|
||||
</pre>
|
||||
<p>
|
||||
Like <code class="computeroutput"><span class="identifier">mp_if_c</span></code>, but the first
|
||||
@@ -1337,16 +1339,16 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="mp11.reference.utility.mp_eval_if_c_b_t_f_u"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_eval_if_c_b_t_f_u" title="mp_eval_if_c<B, T, F, U...>"><code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<a name="mp11.reference.utility.mp_eval_if_c_c_t_f_u"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_eval_if_c_c_t_f_u" title="mp_eval_if_c<C, T, F, U...>"><code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code></a>
|
||||
</h4></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">bool</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...></span> <span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">using</span> <span class="identifier">mp_eval_if_c</span> <span class="special">=</span> <span class="comment">/*...*/</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<code class="computeroutput"><span class="identifier">mp_eval_if_c</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">F</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code>
|
||||
is an alias for <code class="computeroutput"><span class="identifier">T</span></code> when
|
||||
<code class="computeroutput"><span class="identifier">B</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>,
|
||||
<code class="computeroutput"><span class="identifier">C</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>,
|
||||
for <code class="computeroutput"><span class="identifier">F</span><span class="special"><</span><span class="identifier">U</span><span class="special">...></span></code>
|
||||
otherwise. Its purpose is to avoid evaluating <code class="computeroutput"><span class="identifier">F</span><span class="special"><</span><span class="identifier">U</span><span class="special">...></span></code> when the condition is <code class="computeroutput"><span class="keyword">true</span></code> as it may not be valid in this case.
|
||||
</p>
|
||||
@@ -1365,6 +1367,18 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="mp11.reference.utility.mp_eval_if_q_c_t_q_u"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_eval_if_q_c_t_q_u" title="mp_eval_if_q<C, T, Q, U...>"><code class="computeroutput"><span class="identifier">mp_eval_if_q</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Q</span><span class="special">,</span>
|
||||
<span class="identifier">U</span><span class="special">...></span></code></a>
|
||||
</h4></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Q</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">using</span> <span class="identifier">mp_eval_if_q</span> <span class="special">=</span> <span class="identifier">mp_eval_if</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Q</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">U</span><span class="special">...>;</span>
|
||||
</pre>
|
||||
<p>
|
||||
Like <code class="computeroutput"><span class="identifier">mp_eval_if</span></code>, but takes
|
||||
a quoted metafunction.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="mp11.reference.utility.mp_valid_f_t"></a><a class="link" href="mp11.html#mp11.reference.utility.mp_valid_f_t" title="mp_valid<F, T...>"><code class="computeroutput"><span class="identifier">mp_valid</span><span class="special"><</span><span class="identifier">F</span><span class="special">,</span> <span class="identifier">T</span><span class="special">...></span></code></a>
|
||||
</h4></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...></span> <span class="keyword">class</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">using</span> <span class="identifier">mp_valid</span> <span class="special">=</span> <span class="comment">/*...*/</span><span class="special">;</span>
|
||||
@@ -2415,7 +2429,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: May 18, 2017 at 23:36:45 GMT</small></p></td>
|
||||
<td align="left"><p><small>Last revised: May 18, 2017 at 23:57:52 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
|
||||
+11
-5
@@ -23,7 +23,7 @@
|
||||
template<class... T> struct mp_inherit: T... {};
|
||||
[endsect]
|
||||
|
||||
[section `mp_if_c<B, T, E...>`]
|
||||
[section `mp_if_c<C, T, E...>`]
|
||||
template<bool C, class T, class... E> using mp_if_c = /*...*/;
|
||||
|
||||
`mp_if_c<true, T, E...>` is an alias for `T`. `mp_if_c<false, T, E>` is an alias for `E`. Otherwise, the result is a substitution failure.
|
||||
@@ -34,16 +34,16 @@
|
||||
template<class I> using void_if_5 = mp_if_c<I::value == 5, void>; // `void` when `I::value` is 5, substitution failure otherwise
|
||||
[endsect]
|
||||
|
||||
[section `mp_if<C, T, E>`]
|
||||
template<class C, class T, class E> using mp_if = mp_if_c<static_cast<bool>(C::value), T, E>;
|
||||
[section `mp_if<C, T, E...>`]
|
||||
template<class C, class T, class E...> using mp_if = mp_if_c<static_cast<bool>(C::value), T, E...>;
|
||||
|
||||
Like `mp_if_c`, but the first argument is a type.
|
||||
[endsect]
|
||||
|
||||
[section `mp_eval_if_c<B, T, F, U...>`]
|
||||
[section `mp_eval_if_c<C, T, F, U...>`]
|
||||
template<bool C, class T, template<class...> class F, class... U> using mp_eval_if_c = /*...*/;
|
||||
|
||||
`mp_eval_if_c<B, T, F, U...>` is an alias for `T` when `B` is `true`, for `F<U...>` otherwise. Its purpose
|
||||
`mp_eval_if_c<C, T, F, U...>` is an alias for `T` when `C` is `true`, for `F<U...>` otherwise. Its purpose
|
||||
is to avoid evaluating `F<U...>` when the condition is `true` as it may not be valid in this case.
|
||||
[endsect]
|
||||
|
||||
@@ -53,6 +53,12 @@ is to avoid evaluating `F<U...>` when the condition is `true` as it may not be v
|
||||
Like `mp_eval_if_c`, but the first argument is a type.
|
||||
[endsect]
|
||||
|
||||
[section `mp_eval_if_q<C, T, Q, U...>`]
|
||||
template<class C, class T, class Q, class... U> using mp_eval_if_q = mp_eval_if<C, T, Q::template fn, U...>;
|
||||
|
||||
Like `mp_eval_if`, but takes a quoted metafunction.
|
||||
[endsect]
|
||||
|
||||
[section `mp_valid<F, T...>`]
|
||||
template<template<class...> class F, class... T> using mp_valid = /*...*/;
|
||||
|
||||
|
||||
@@ -105,23 +105,15 @@ template<class T, template<class...> class F, class... U> struct mp_eval_if_c_im
|
||||
|
||||
template<bool C, class T, template<class...> class F, class... U> using mp_eval_if_c = typename detail::mp_eval_if_c_impl<C, T, F, U...>::type;
|
||||
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_quote
|
||||
template<template<class...> class F> struct mp_quote
|
||||
{
|
||||
#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1910 && BOOST_MSVC >= 1900 )
|
||||
#else
|
||||
private:
|
||||
#endif
|
||||
|
||||
template<class... T> struct _fn { using type = F<T...>; };
|
||||
|
||||
public:
|
||||
|
||||
// the indirection through _fn works around the language inability
|
||||
// the indirection through mp_defer works around the language inability
|
||||
// to expand T... into a fixed parameter list of an alias template
|
||||
|
||||
template<class... T> using fn = typename _fn<T...>::type;
|
||||
template<class... T> using fn = typename mp_defer<F, T...>::type;
|
||||
};
|
||||
|
||||
// mp_unquote
|
||||
|
||||
+14
-1
@@ -1,5 +1,5 @@
|
||||
|
||||
// Copyright 2015 Peter Dimov.
|
||||
// Copyright 2015, 2017 Peter Dimov.
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
//
|
||||
@@ -21,19 +21,32 @@ int main()
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_c<false, char[], mp_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
using boost::mp11::mp_eval_if;
|
||||
using boost::mp11::mp_eval_if_q;
|
||||
using boost::mp11::mp_quote;
|
||||
|
||||
using qt_identity = mp_quote<mp_identity>;
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<std::true_type, char[], mp_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<std::false_type, char[], mp_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<std::true_type, char[], qt_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<std::false_type, char[], qt_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
using boost::mp11::mp_int;
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<mp_int<-7>, char[], mp_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<mp_int<0>, char[], mp_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<mp_int<-7>, char[], qt_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<mp_int<0>, char[], qt_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
using boost::mp11::mp_size_t;
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<mp_size_t<14>, char[], mp_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if<mp_size_t<0>, char[], mp_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<mp_size_t<14>, char[], qt_identity, void, void, void>, char[]>));
|
||||
BOOST_TEST_TRAIT_TRUE((std::is_same<mp_eval_if_q<mp_size_t<0>, char[], qt_identity, void()>, mp_identity<void()>>));
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
+16
-3
@@ -1,5 +1,5 @@
|
||||
|
||||
// Copyright 2017 Peter Dimov.
|
||||
// Copyright 2017 Peter Dimov.
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
//
|
||||
@@ -12,14 +12,15 @@
|
||||
#include <type_traits>
|
||||
|
||||
using boost::mp11::mp_eval_if;
|
||||
using boost::mp11::mp_eval_if_q;
|
||||
using boost::mp11::mp_identity_t;
|
||||
using boost::mp11::mp_valid;
|
||||
using boost::mp11::mp_quote;
|
||||
|
||||
template<class C, class... A> using eval_if = mp_eval_if<C, void, mp_identity_t, A...>;
|
||||
|
||||
int main()
|
||||
{
|
||||
using boost::mp11::mp_valid;
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<eval_if, std::true_type>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<eval_if, std::true_type, void>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<eval_if, std::true_type, void, void>));
|
||||
@@ -30,5 +31,17 @@ int main()
|
||||
BOOST_TEST_TRAIT_FALSE((mp_valid<eval_if, std::false_type, void, void>));
|
||||
BOOST_TEST_TRAIT_FALSE((mp_valid<eval_if, std::false_type, void, void, void>));
|
||||
|
||||
using Qi = mp_quote<mp_identity_t>;
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<mp_eval_if_q, std::true_type, void, Qi>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<mp_eval_if_q, std::true_type, void, Qi, void>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<mp_eval_if_q, std::true_type, void, Qi, void, void>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<mp_eval_if_q, std::true_type, void, Qi, void, void, void>));
|
||||
|
||||
BOOST_TEST_TRAIT_FALSE((mp_valid<mp_eval_if_q, std::false_type, void, Qi>));
|
||||
BOOST_TEST_TRAIT_TRUE((mp_valid<mp_eval_if_q, std::false_type, void, Qi, void>));
|
||||
BOOST_TEST_TRAIT_FALSE((mp_valid<mp_eval_if_q, std::false_type, void, Qi, void, void>));
|
||||
BOOST_TEST_TRAIT_FALSE((mp_valid<mp_eval_if_q, std::false_type, void, Qi, void, void, void>));
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user