Merge remote-tracking branch 'refs/remotes/origin/master' into gh-pages

This commit is contained in:
badair
2016-04-17 19:24:10 -05:00
8 changed files with 155 additions and 22 deletions

View File

@@ -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]

View File

@@ -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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">&gt;</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>

View File

@@ -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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">f</span><span class="special">&gt;;</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">&lt;</span><span class="identifier">test</span><span class="special">,</span> <span class="identifier">expect</span><span class="special">&gt;::</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>

View File

@@ -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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">NewArgs</span><span class="special">...&gt;</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">&lt;</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">&gt;</span>

View File

@@ -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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">NewArgs</span><span class="special">...&gt;</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">&lt;</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">&gt;</span>

View File

@@ -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">&lt;</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">&gt;</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">&amp;)(</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">&lt;</span><span class="identifier">f</span><span class="special">&gt;;</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">&amp;)(</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">&lt;</span><span class="identifier">test</span><span class="special">,</span> <span class="identifier">expect</span><span class="special">&gt;::</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
View 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
View 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, "");
}
//]