mirror of
https://github.com/boostorg/callable_traits.git
synced 2026-02-27 04:52:19 +00:00
Merge remote-tracking branch 'refs/remotes/origin/master' into gh-pages
This commit is contained in:
@@ -1419,9 +1419,9 @@ For `add_calling_convention` to work as-intended, you must:
|
||||
|
||||
namespace ``[lib_namespace]`` {
|
||||
|
||||
template<typename T, template<class...> class Container>
|
||||
using expand_args = /* implementation-defined */;
|
||||
}
|
||||
template<typename T, template<class...> class Container>
|
||||
using expand_args = /* implementation-defined */;
|
||||
}
|
||||
|
||||
[heading Constraints]
|
||||
# `T` must be one of the following:
|
||||
@@ -1715,14 +1715,40 @@ TODO
|
||||
[endsect]
|
||||
|
||||
[section:ref_push_back push_back]
|
||||
TODO
|
||||
|
||||
namespace ``[lib_namespace]`` {
|
||||
|
||||
template<typename T, typename... NewArgs>
|
||||
using push_back = /* implementation-defined */;
|
||||
}
|
||||
|
||||
[heading Constraints]
|
||||
* `T` must be a [link_signature]
|
||||
|
||||
[heading Behavior]
|
||||
* `push_back<T, NewArgs...>` aliases a type identical to `T`, except that `NewArgs...` have been appended to the back of `T`'s parameter list [Args].
|
||||
* [VarArgs] remain if present in `T`.
|
||||
|
||||
[heading Example]
|
||||
[import ../example/push_back.cpp]
|
||||
[push_back]
|
||||
[endsect]
|
||||
|
||||
[section:ref_push_front push_front]
|
||||
TODO
|
||||
|
||||
namespace ``[lib_namespace]`` {
|
||||
|
||||
template<typename T, typename... NewArgs>
|
||||
using push_front = /* implementation-defined */;
|
||||
}
|
||||
|
||||
[heading Constraints]
|
||||
* `T` must be a [link_signature]
|
||||
|
||||
[heading Behavior]
|
||||
* `push_back<T, NewArgs...>` aliases a type identical to `T`, except that `NewArgs...` have been appended to the front of `T`'s parameter list [Args].
|
||||
* [VarArgs] remain if present in `T`.
|
||||
|
||||
[heading Example]
|
||||
[import ../example/push_front.cpp]
|
||||
[push_front]
|
||||
@@ -1731,14 +1757,14 @@ TODO
|
||||
[section:ref_pop_back pop_back]
|
||||
TODO
|
||||
[heading Example]
|
||||
[/import ../example/pop_back.cpp]
|
||||
[import ../example/pop_back.cpp]
|
||||
[pop_back]
|
||||
[endsect]
|
||||
|
||||
[section:ref_push_front pop_front]
|
||||
TODO
|
||||
[heading Example]
|
||||
[/import ../example/pop_front.cpp]
|
||||
[import ../example/pop_front.cpp]
|
||||
[pop_front]
|
||||
[endsect]
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
</h2></div></div></div>
|
||||
<pre class="programlisting"><span class="keyword">namespace</span> <code class="literal">callable_traits</code> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</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">Container</span><span class="special">></span>
|
||||
<span class="keyword">using</span> <span class="identifier">expand_args</span> <span class="special">=</span> <span class="comment">/* implementation-defined */</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</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">Container</span><span class="special">></span>
|
||||
<span class="keyword">using</span> <span class="identifier">expand_args</span> <span class="special">=</span> <span class="comment">/* implementation-defined */</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_expand_args.h0"></a>
|
||||
|
||||
@@ -33,9 +33,18 @@
|
||||
<a name="callable_traits.ref_pop_back.h0"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_pop_back.example"></a></span><a class="link" href="ref_pop_back.html#callable_traits.ref_pop_back.example">Example</a>
|
||||
</h4>
|
||||
<p>
|
||||
[pop_back]
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">callable_traits</span><span class="special">/</span><span class="identifier">pop_back</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">namespace</span> <span class="identifier">ct</span> <span class="special">=</span> <span class="identifier">callable_traits</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">using</span> <span class="identifier">f</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">);</span>
|
||||
<span class="keyword">using</span> <span class="identifier">test</span> <span class="special">=</span> <span class="identifier">ct</span><span class="special">::</span><span class="identifier">pop_back</span><span class="special"><</span><span class="identifier">f</span><span class="special">>;</span>
|
||||
<span class="keyword">using</span> <span class="identifier">expect</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">);</span>
|
||||
<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">test</span><span class="special">,</span> <span class="identifier">expect</span><span class="special">>::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
||||
@@ -26,11 +26,34 @@
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="callable_traits.ref_push_back"></a><a class="link" href="ref_push_back.html" title="push_back">push_back</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
TODO
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">namespace</span> <code class="literal">callable_traits</code> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> <span class="identifier">NewArgs</span><span class="special">></span>
|
||||
<span class="keyword">using</span> <span class="identifier">push_back</span> <span class="special">=</span> <span class="comment">/* implementation-defined */</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_back.h0"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_back.constraints"></a></span><a class="link" href="ref_push_back.html#callable_traits.ref_push_back.constraints">Constraints</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">T</span></code> must be a <a class="link" href="concepts.html#callable_traits.concepts.ref_signature" title="Signature"><span class="green">Signature</span></a>
|
||||
</li></ul></div>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_back.h1"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_back.behavior"></a></span><a class="link" href="ref_push_back.html#callable_traits.ref_push_back.behavior">Behavior</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">push_back</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">NewArgs</span><span class="special">...></span></code> aliases a type identical to <code class="computeroutput"><span class="identifier">T</span></code>, except that <code class="computeroutput"><span class="identifier">NewArgs</span><span class="special">...</span></code> have been appended to the back of <code class="computeroutput"><span class="identifier">T</span></code>'s parameter list <code class="literal"><span class="emphasis"><em>[Args...]</em></span></code>.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="literal"><span class="emphasis"><em>[VarArgs]</em></span></code> remain if present in
|
||||
<code class="computeroutput"><span class="identifier">T</span></code>.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_back.h2"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_back.example"></a></span><a class="link" href="ref_push_back.html#callable_traits.ref_push_back.example">Example</a>
|
||||
</h4>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">callable_traits</span><span class="special">/</span><span class="identifier">push_back</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
@@ -26,11 +26,35 @@
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="callable_traits.ref_push_front"></a><a class="link" href="ref_push_front.html" title="push_front">push_front</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
TODO
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">namespace</span> <code class="literal">callable_traits</code> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> <span class="identifier">NewArgs</span><span class="special">></span>
|
||||
<span class="keyword">using</span> <span class="identifier">push_front</span> <span class="special">=</span> <span class="comment">/* implementation-defined */</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_front.h0"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_front.constraints"></a></span><a class="link" href="ref_push_front.html#callable_traits.ref_push_front.constraints">Constraints</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">T</span></code> must be a <a class="link" href="concepts.html#callable_traits.concepts.ref_signature" title="Signature"><span class="green">Signature</span></a>
|
||||
</li></ul></div>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_front.h1"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_front.behavior"></a></span><a class="link" href="ref_push_front.html#callable_traits.ref_push_front.behavior">Behavior</a>
|
||||
</h4>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="identifier">push_back</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">NewArgs</span><span class="special">...></span></code> aliases a type identical to <code class="computeroutput"><span class="identifier">T</span></code>, except that <code class="computeroutput"><span class="identifier">NewArgs</span><span class="special">...</span></code> have been appended to the front of
|
||||
<code class="computeroutput"><span class="identifier">T</span></code>'s parameter list <code class="literal"><span class="emphasis"><em>[Args...]</em></span></code>.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="literal"><span class="emphasis"><em>[VarArgs]</em></span></code> remain if present in
|
||||
<code class="computeroutput"><span class="identifier">T</span></code>.
|
||||
</li>
|
||||
</ul></div>
|
||||
<h4>
|
||||
<a name="callable_traits.ref_push_front.h2"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_front.example"></a></span><a class="link" href="ref_push_front.html#callable_traits.ref_push_front.example">Example</a>
|
||||
</h4>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">callable_traits</span><span class="special">/</span><span class="identifier">push_front</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
@@ -33,9 +33,20 @@
|
||||
<a name="callable_traits.ref_push_front0.h0"></a>
|
||||
<span class="phrase"><a name="callable_traits.ref_push_front0.example"></a></span><a class="link" href="ref_push_front0.html#callable_traits.ref_push_front0.example">Example</a>
|
||||
</h4>
|
||||
<p>
|
||||
[pop_front]
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">callable_traits</span><span class="special">/</span><span class="identifier">pop_front</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">namespace</span> <span class="identifier">ct</span> <span class="special">=</span> <span class="identifier">callable_traits</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">using</span> <span class="identifier">f</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">foo</span><span class="special">::*</span> <span class="keyword">const</span> <span class="special">&)(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">long</span><span class="special">);</span>
|
||||
<span class="keyword">using</span> <span class="identifier">test</span> <span class="special">=</span> <span class="identifier">ct</span><span class="special">::</span><span class="identifier">pop_front</span><span class="special"><</span><span class="identifier">f</span><span class="special">>;</span>
|
||||
<span class="keyword">using</span> <span class="identifier">expect</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">foo</span><span class="special">::*</span> <span class="keyword">const</span> <span class="special">&)(</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">long</span><span class="special">);</span>
|
||||
<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">test</span><span class="special">,</span> <span class="identifier">expect</span><span class="special">>::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
||||
19
example/pop_back.cpp
Normal file
19
example/pop_back.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
/*<-
|
||||
Copyright Barrett Adair 2016
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
|
||||
->*/
|
||||
|
||||
//[ pop_back
|
||||
#include <callable_traits/pop_back.hpp>
|
||||
|
||||
namespace ct = callable_traits;
|
||||
|
||||
int main() {
|
||||
|
||||
using f = void(*)(int, char);
|
||||
using test = ct::pop_back<f>;
|
||||
using expect = void(*)(int);
|
||||
static_assert(std::is_same<test, expect>::value, "");
|
||||
}
|
||||
//]
|
||||
21
example/pop_front.cpp
Normal file
21
example/pop_front.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
/*<-
|
||||
Copyright Barrett Adair 2016
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
|
||||
->*/
|
||||
|
||||
//[ pop_front
|
||||
#include <callable_traits/pop_front.hpp>
|
||||
|
||||
namespace ct = callable_traits;
|
||||
|
||||
struct foo;
|
||||
|
||||
int main() {
|
||||
|
||||
using f = void(foo::* const &)(int, char, long);
|
||||
using test = ct::pop_front<f>;
|
||||
using expect = void(foo::* const &)(char, long);
|
||||
static_assert(std::is_same<test, expect>::value, "");
|
||||
}
|
||||
//]
|
||||
Reference in New Issue
Block a user