<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>TR1 By Subject</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> <link rel="up" href="../boost_tr1.html" title="Chapter 23. Boost.TR1"> <link rel="prev" href="config.html" title="Configuration"> <link rel="next" href="header_list.html" title="TR1 By Header"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td> <td align="center"><a href="../../../index.html">Home</a></td> <td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td> <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> <td align="center"><a href="../../../more/index.htm">More</a></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="config.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_tr1.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header_list.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_tr1.subject_list"></a><a class="link" href="subject_list.html" title="TR1 By Subject"> TR1 By Subject</a> </h2></div></div></div> <div class="toc"><dl> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.ref"> Reference Wrappers.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.ptrs"> Smart Pointers.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.result_of"> Class template result_of.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.mem_fn"> Function template mem_fn.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.bind"> Function Object Binders.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.function"> Polymorphic function wrappers.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.type_traits"> Type Traits.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.random"> Random Number Generators and Distributions.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.tuple"> Tuples.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.utility"> Tuple Interface to std::pair.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.array"> Fixed Size Array.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.hash"> Hash Function Objects.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.regex"> Regular Expressions.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.complex"> Complex Number Algorithm Overloads.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.complex_trig"> Complex Number Additional Algorithms.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.unordered_set"> Unordered Associative Set (Hash Table).</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.unordered_map"> Unordered Associative Map (Hash Table).</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.special"> Mathematical Special Functions.</a></span></dt> <dt><span class="section"><a href="subject_list.html#boost_tr1.subject_list.c99_special"> C99 Mathematical Special Functions.</a></span></dt> </dl></div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.ref"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.ref" title="Reference Wrappers."> Reference Wrappers.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> The Ref library is a small library that is useful for passing references to function templates (algorithms) that would usually take copies of their arguments. It defines the class template <code class="computeroutput"><span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>, and the two functions <code class="computeroutput"><span class="identifier">ref</span></code> and <code class="computeroutput"><span class="identifier">cref</span></code> that return instances of <code class="computeroutput"><span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>. <a href="../../../doc/html/ref.html" target="_top">Refer to Boost.Bind for more information.</a> </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</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">reference_wrapper</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ref</span><span class="special">(</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="identifier">T</span><span class="special">></span> <span class="identifier">reference_wrapper</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">cref</span><span class="special">(</span><span class="keyword">const</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="identifier">T</span><span class="special">></span> <span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">reference_wrapper</span><span class="special"><</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="identifier">T</span><span class="special">></span> <span class="identifier">reference_wrapper</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">cref</span><span class="special">(</span><span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">T</span><span class="special">>);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_REFERENCE_WRAPPER if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The Boost version of this this component does not currently support function call invocation (2.1.2.4), or derivation from std::unary_function or std::binary_function (2.1.2 paragraphs 3 and 4). </p> <p> The Boost version is not implicitly convertible to T& as the TR requires. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.ptrs"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.ptrs" title="Smart Pointers."> Smart Pointers.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">memory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">memory</span><span class="special">></span> </pre> <p> The <code class="computeroutput"><span class="identifier">shared_ptr</span></code> class template stores a pointer to a dynamically allocated object, typically with a C++ new-expression. The object pointed to is guaranteed to be deleted when the last <code class="computeroutput"><span class="identifier">shared_ptr</span></code> pointing to it is destroyed or reset. For more information refer to the <a href="../../../libs/smart_ptr/shared_ptr.htm" target="_top">shared_ptr</a> and <a href="../../../libs/smart_ptr/weak_ptr.htm" target="_top">weak_ptr</a> documentation. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">class</span> <span class="identifier">bad_weak_ptr</span><span class="special">;</span> <span class="comment">// [2.2.3] Class template shared_ptr </span><span class="keyword">template</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">shared_ptr</span><span class="special">;</span> <span class="comment">// [2.2.3.6] shared_ptr comparisons </span><span class="keyword">template</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">U</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span> <span class="keyword">template</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">U</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span> <span class="keyword">template</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">U</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span> <span class="comment">// [2.2.3.8] shared_ptr specialized algorithms </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span> <span class="comment">// [2.2.3.9] shared_ptr casts </span><span class="keyword">template</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">U</span><span class="special">></span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">static_pointer_cast</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span> <span class="keyword">template</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">U</span><span class="special">></span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">dynamic_pointer_cast</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span> <span class="keyword">template</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">U</span><span class="special">></span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">const_pointer_cast</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">r</span><span class="special">);</span> <span class="comment">// [2.2.3.7] shared_ptr I/O </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">E</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">Y</span><span class="special">></span> <span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">>&</span> <span class="keyword">operator</span><span class="special"><<</span> <span class="special">(</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">E</span><span class="special">,</span> <span class="identifier">T</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">Y</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">);</span> <span class="comment">// [2.2.3.10] shared_ptr get_deleter </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">D</span> <span class="special">*</span> <span class="identifier">get_deleter</span><span class="special">(</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">);</span> <span class="comment">// [2.2.4] Class template weak_ptr </span><span class="keyword">template</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">weak_ptr</span><span class="special">;</span> <span class="comment">// [2.2.4.6] weak_ptr comparison </span><span class="keyword">template</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">U</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="identifier">weak_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">weak_ptr</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">b</span><span class="special">);</span> <span class="comment">// [2.2.4.7] weak_ptr specialized algorithms </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">weak_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">weak_ptr</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">b</span><span class="special">);</span> <span class="comment">// [2.2.5] Class enable_shared_from_this </span><span class="keyword">template</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">enable_shared_from_this</span><span class="special">;</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_SHARED_PTR if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> There are no known deviations from the standard when using the Boost version of this component. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.result_of"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.result_of" title="Class template result_of."> Class template result_of.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> The class template <code class="computeroutput"><span class="identifier">result_of</span></code> helps determine the type of a call expression. Given an lvalue <code class="computeroutput"><span class="identifier">f</span></code> of type <code class="computeroutput"><span class="identifier">F</span></code> and lvalues <code class="computeroutput"><span class="identifier">t1</span></code>, <code class="computeroutput"><span class="identifier">t2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">tN</span></code> of types <code class="computeroutput"><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TN</span></code>, respectively, the type <code class="computeroutput"><span class="identifier">result_of</span><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TN</span><span class="special">)>::</span><span class="identifier">type</span></code> defines the result type of the expression <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">t1</span><span class="special">,</span> <span class="identifier">t2</span><span class="special">,</span> <span class="special">...,</span><span class="identifier">tN</span><span class="special">)</span></code>. The implementation permits the type <code class="computeroutput"><span class="identifier">F</span></code> to be a function pointer, function reference, member function pointer, or class type. For more information <a href="../../../libs/utility/utility.htm#result_of" target="_top">refer to the Boost.Utility documentation.</a> </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">result_of</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_RESULT_OF if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.mem_fn"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.mem_fn" title="Function template mem_fn."> Function template mem_fn.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">mem_fn</span></code> is a generalization of the standard functions <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">mem_fun</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">mem_fun_ref</span></code>. It supports member function pointers with more than one argument, and the returned function object can take a pointer, a reference, or a smart pointer to an object instance as its first argument. <code class="computeroutput"><span class="identifier">mem_fn</span></code> also supports pointers to data members by treating them as functions taking no arguments and returning a (const) reference to the member. For more information refer to the <a href="../../../libs/bind/mem_fn.html" target="_top">Boost.Mem_fn documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">unspecified</span> <span class="identifier">mem_fn</span><span class="special">(</span><span class="identifier">R</span> <span class="identifier">T</span><span class="special">::*</span> <span class="identifier">pm</span><span class="special">);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_MEM_FN if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The Boost implementation does not produce functors that inherit from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">unary_function</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">binary_function</span></code>, nor does it function correctly with pointers to volatile member functions (these should be extremely rare in practice however). </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.bind"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.bind" title="Function Object Binders."> Function Object Binders.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">bind</span></code> is a generalization of the standard functions <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind1st</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind2nd</span></code>. It supports arbitrary function objects, functions, function pointers, and member function pointers, and is able to bind any argument to a specific value or route input arguments into arbitrary positions. <code class="computeroutput"><span class="identifier">bind</span></code> does not place any requirements on the function object; in particular, it does not need the <code class="computeroutput"><span class="identifier">result_type</span></code>, <code class="computeroutput"><span class="identifier">first_argument_type</span></code> and <code class="computeroutput"><span class="identifier">second_argument_type</span></code> standard typedefs. For more information refer to the <a href="../../../libs/bind/bind.html" target="_top">Boost.Bind documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [3.6] Function object binders </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_bind_expression</span><span class="special">;</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_placeholder</span><span class="special">;</span> <span class="keyword">template</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="identifier">T1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">Tn</span> <span class="special">></span> <span class="identifier">unspecified</span> <span class="identifier">bind</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">t1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Tn</span> <span class="identifier">tn</span> <span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">R</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="identifier">T1</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">Tn</span> <span class="special">></span> <span class="identifier">unspecified</span> <span class="identifier">bind</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T1</span> <span class="identifier">t1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">Tn</span> <span class="identifier">tn</span> <span class="special">);</span> <span class="keyword">namespace</span> <span class="identifier">placeholders</span> <span class="special">{</span> <span class="comment">// M is the implementation-defined number of placeholders </span> <span class="keyword">extern</span> <span class="identifier">unspecified</span> <span class="identifier">_1</span><span class="special">;</span> <span class="keyword">extern</span> <span class="identifier">unspecified</span> <span class="identifier">_2</span><span class="special">;</span> <span class="special">.</span> <span class="special">.</span> <span class="special">.</span> <span class="keyword">extern</span> <span class="identifier">unspecified</span> <span class="identifier">_M</span><span class="special">;</span> <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_BIND if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The traits classes <code class="computeroutput"><span class="identifier">is_placeholder</span></code> and <code class="computeroutput"><span class="identifier">is_bind_expression</span></code> are not supported by the Boost implementation. </p> <p> The named return value syntax isn't supported if the object being bound is a function pointer, for example: </p> <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(&</span><span class="identifier">my_proc</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span> <span class="comment">/* etc */</span><span class="special">);</span> <span class="comment">// works OK. </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">bind</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(&</span><span class="identifier">my_proc</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span> <span class="comment">/* etc */</span><span class="special">);</span> <span class="comment">// causes compiler error. </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">bind</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">my_function_object</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span> <span class="comment">/* etc */</span><span class="special">);</span> <span class="comment">// works OK. </span></pre> <p> On the other hand, the Boost implementation does work with pointers to overloaded functions, and optionally with function pointers with non-standard calling conventions. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.function"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.function" title="Polymorphic function wrappers."> Polymorphic function wrappers.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> The polymorphic function wrappers are a family of class templates that may be used as a generalized callback mechanism. A polymorphic function wrapper shares features with function pointers, in that both define a call interface (for example a function taking two integer arguments and returning a floating-point value) through which some arbitrary code may be called. However a polymorphic function wrapper can call any callable object with a compatible call signature, this could be a function pointer, or it could be a function object produced by std::tr1::bind, or some other mechanism. For more information see the <a href="../../../doc/html/function.html" target="_top">Boost.Function documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [3.7] polymorphic function wrappers </span><span class="keyword">class</span> <span class="identifier">bad_function_call</span><span class="special">;</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">function</span><span class="special">;</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&,</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Function2</span><span class="special">></span> <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function1</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function2</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Function2</span><span class="special">></span> <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function1</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function2</span><span class="special">>&);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&,</span> <span class="identifier">unspecified</span><span class="special">-</span><span class="identifier">null</span><span class="special">-</span><span class="identifier">pointer</span><span class="special">-</span><span class="identifier">type</span> <span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">unspecified</span><span class="special">-</span><span class="identifier">null</span><span class="special">-</span><span class="identifier">pointer</span><span class="special">-</span><span class="identifier">type</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&,</span> <span class="identifier">unspecified</span><span class="special">-</span><span class="identifier">null</span><span class="special">-</span><span class="identifier">pointer</span><span class="special">-</span><span class="identifier">type</span> <span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Function</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">unspecified</span><span class="special">-</span><span class="identifier">null</span><span class="special">-</span><span class="identifier">pointer</span><span class="special">-</span><span class="identifier">type</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">function</span><span class="special"><</span><span class="identifier">Function</span><span class="special">>&);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_FUNCTION if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The Boost version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">function</span></code> lacks the member function <code class="computeroutput"><span class="identifier">target_type</span><span class="special">()</span></code> and does not inherit from <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">unary_function</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">binary_function</span></code> when applicable. The member function target() can only access pointer-to-member targets when they have been wrapped in mem_fn. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.type_traits"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.type_traits" title="Type Traits."> Type Traits.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">type_traits</span><span class="special">></span> </pre> <p> Type traits enable generic code to access the fundamental properties of a type, to determine the relationship between two types, or to transform one type into another related type. For more information refer to the <a href="../../../libs/type_traits/index.html" target="_top">Boost.Type_traits documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">v</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">integral_constant</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">integral_constant</span><span class="special"><</span><span class="keyword">bool</span><span class="special">,</span> <span class="keyword">true</span><span class="special">></span> <span class="identifier">true_type</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">integral_constant</span><span class="special"><</span><span class="keyword">bool</span><span class="special">,</span> <span class="keyword">false</span><span class="special">></span> <span class="identifier">false_type</span><span class="special">;</span> <span class="comment">// [4.5.1] primary type categories: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_void</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_integral</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_floating_point</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_array</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_pointer</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_reference</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_member_object_pointer</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_enum</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_union</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_class</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_function</span><span class="special">;</span> <span class="comment">// [4.5.2] composite type categories: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_arithmetic</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_fundamental</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_object</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_scalar</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_compound</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_member_pointer</span><span class="special">;</span> <span class="comment">// [4.5.3] type properties: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_const</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_volatile</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_pod</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_empty</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_polymorphic</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_abstract</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_trivial_constructor</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_trivial_copy</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_trivial_assign</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_trivial_destructor</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_nothrow_constructor</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_nothrow_copy</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_nothrow_assign</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">has_virtual_destructor</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_signed</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_unsigned</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">alignment_of</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">rank</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">I</span> <span class="special">=</span> <span class="number">0</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">extent</span><span class="special">;</span> <span class="comment">// [4.6] type relations: </span><span class="keyword">template</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">U</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_same</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Base</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_base_of</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">From</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">To</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">is_convertible</span><span class="special">;</span> <span class="comment">// [4.7.1] const-volatile modifications: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_const</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_volatile</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_cv</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">add_const</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">add_volatile</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">add_cv</span><span class="special">;</span> <span class="comment">// [4.7.2] reference modifications: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_reference</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">add_reference</span><span class="special">;</span> <span class="comment">// [4.7.3] array modifications: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_extent</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_all_extents</span><span class="special">;</span> <span class="comment">// [4.7.4] pointer modifications: </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">remove_pointer</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">add_pointer</span><span class="special">;</span> <span class="comment">// [4.8] other transformations: </span><span class="keyword">template</span> <span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Len</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">aligned_storage</span><span class="special">;</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_TYPE_TRAITS if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.random"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.random" title="Random Number Generators and Distributions."> Random Number Generators and Distributions.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">random</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">random</span><span class="special">></span> </pre> <p> The random number library is divided into three parts: <a href="../../../libs/random/random-generators.html" target="_top">generators</a>, which are nullary functors producing uniform random number distributions. <a href="../../../libs/random/random-distributions.html" target="_top">Distributions</a>, which are unary functors that adapt a generator to some specific kind of distribution. And the class template <a href="../../../libs/random/random-variate.html" target="_top">variate_generator</a> which combines a generator with a distribution, to create a new generator. For more information see the <a href="../../../libs/random/index.html" target="_top">Boost.Random documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [5.1.3] Class template variate_generator </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">UniformRandomNumberGenerator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Distribution</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">variate_generator</span><span class="special">;</span> <span class="comment">// [5.1.4.1] Class template linear_congruential </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span><span class="special">,</span> <span class="identifier">IntType</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">IntType</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">IntType</span> <span class="identifier">m</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">linear_congruential</span><span class="special">;</span> <span class="comment">// [5.1.4.2] Class template mersenne_twister </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">UIntType</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">w</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">UIntType</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">u</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">UIntType</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">UIntType</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">l</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">mersenne_twister</span><span class="special">;</span> <span class="comment">// [5.1.4.3] Class template substract_with_carry </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span><span class="special">,</span> <span class="identifier">IntType</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">r</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">subtract_with_carry</span><span class="special">;</span> <span class="comment">// [5.1.4.4] Class template substract_with_carry_01 </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">w</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">r</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">subtract_with_carry_01</span><span class="special">;</span> <span class="comment">// [5.1.4.5] Class template discard_block </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">UniformRandomNumberGenerator</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">r</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">discard_block</span><span class="special">;</span> <span class="comment">// [5.1.4.6] Class template xor_combine </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">UniformRandomNumberGenerator1</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">s1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">UniformRandomNumberGenerator2</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">s2</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">xor_combine</span><span class="special">;</span> <span class="comment">// [5.1.5] Predefined generators </span><span class="keyword">typedef</span> <span class="identifier">linear_congruential</span><span class="special"><</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span> <span class="special">,</span> <span class="number">16807</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483647</span><span class="special">></span> <span class="identifier">minstd_rand0</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">linear_congruential</span><span class="special"><</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span> <span class="special">,</span> <span class="number">48271</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="number">2147483647</span><span class="special">></span> <span class="identifier">minstd_rand</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">mersenne_twister</span><span class="special"><</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span> <span class="special">,</span> <span class="number">32</span><span class="special">,</span> <span class="number">624</span><span class="special">,</span> <span class="number">397</span><span class="special">,</span> <span class="number">31</span><span class="special">,</span> <span class="number">0x9908b0df</span><span class="special">,</span> <span class="number">11</span><span class="special">,</span> <span class="number">7</span><span class="special">,</span> <span class="number">0x9d2c5680</span><span class="special">,</span> <span class="number">15</span><span class="special">,</span> <span class="number">0xefc60000</span><span class="special">,</span> <span class="number">18</span><span class="special">></span> <span class="identifier">mt19937</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">subtract_with_carry_01</span><span class="special"><</span> <span class="keyword">float</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux_base_01</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">subtract_with_carry_01</span><span class="special"><</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">48</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux64_base_01</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">discard_block</span><span class="special"><</span> <span class="identifier">subtract_with_carry</span><span class="special"><</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span> <span class="special">,</span> <span class="special">(</span><span class="number">1</span><span class="special"><<</span><span class="number">24</span><span class="special">),</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">>,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux3</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">discard_block</span><span class="special"><</span> <span class="identifier">subtract_with_carry</span><span class="special"><</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span><span class="special">,</span> <span class="special">(</span><span class="number">1</span><span class="special"><<</span><span class="number">24</span><span class="special">),</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">>,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux4</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">discard_block</span><span class="special"><</span> <span class="identifier">subtract_with_carry_01</span><span class="special"><</span> <span class="keyword">float</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">>,</span> <span class="number">223</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux3_01</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">discard_block</span><span class="special"><</span> <span class="identifier">subtract_with_carry_01</span><span class="special"><</span> <span class="keyword">float</span><span class="special">,</span> <span class="number">24</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">24</span><span class="special">>,</span> <span class="number">389</span><span class="special">,</span> <span class="number">24</span><span class="special">></span> <span class="identifier">ranlux4_01</span><span class="special">;</span> <span class="comment">// [5.1.6] Class random_device </span><span class="keyword">class</span> <span class="identifier">random_device</span><span class="special">;</span> <span class="comment">// [5.1.7.1] Class template uniform_int </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">uniform_int</span><span class="special">;</span> <span class="comment">// [5.1.7.2] Class bernoulli_distribution </span><span class="keyword">class</span> <span class="identifier">bernoulli_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.3] Class template geometric_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">geometric_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.4] Class template poisson_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">poisson_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.5] Class template binomial_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">IntType</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">binomial_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.6] Class template uniform_real </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">uniform_real</span><span class="special">;</span> <span class="comment">// [5.1.7.7] Class template exponential_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">exponential_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.8] Class template normal_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">normal_distribution</span><span class="special">;</span> <span class="comment">// [5.1.7.9] Class template gamma_distribution </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">gamma_distribution</span><span class="special">;</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_RANDOM if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The Boost implementation has the following limitations: </p> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> The linear_congruential generator is fully supported for signed integer types only (unsigned types probably only work when the modulus is zero). </li> <li class="listitem"> The subtract_with_carry template does not support a modulus of zero. </li> <li class="listitem"> Not all of the standard generator types have Boost documentation yet, they are none the less supported however. </li> <li class="listitem"> Class template variate_generator does not have a template unary function call operator(), only the non-template nullary version. </li> </ul></div> <p> Note also that most of the Random number generators have been re-implemented as thin wrappers around the Boost versions in order to provide a standard conforming interface (the Boost versions all take an additional, redundant, template parameter, and are initialized by iterators rather than functors). </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.tuple"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.tuple" title="Tuples."> Tuples.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">tuple</span><span class="special">></span> </pre> <p> A tuple is a fixed size collection of elements. Pairs, triples, quadruples etc. are tuples. In a programming language, a tuple is a data object containing other objects as elements. These element objects may be of different types. Tuples are convenient in many circumstances. For instance, tuples make it easy to define functions that return more than one value. Some programming languages, such as ML, Python and Haskell, have built-in tuple constructs. Unfortunately C++ does not. To compensate for this "deficiency", the TR1 Tuple Library implements a tuple construct using templates. For more information see the <a href="../../../libs/tuple/index.html" target="_top">Boost Tuple Library Documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [6.1.3] Class template tuple </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span> <span class="special">=</span> <span class="identifier">unspecified</span> <span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="identifier">unspecified</span> <span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span> <span class="special">=</span> <span class="identifier">unspecified</span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">tuple</span><span class="special">;</span> <span class="comment">// [6.1.3.2] Tuple creation functions </span><span class="keyword">const</span> <span class="identifier">unspecified</span> <span class="identifier">ignore</span><span class="special">;</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TN</span><span class="special">></span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">V1</span><span class="special">,</span> <span class="identifier">V2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">VN</span><span class="special">></span> <span class="identifier">make_tuple</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T1</span><span class="special">&,</span> <span class="keyword">const</span> <span class="identifier">T2</span><span class="special">&</span> <span class="special">,</span> <span class="special">...,</span> <span class="keyword">const</span> <span class="identifier">TN</span><span class="special">&);</span> <span class="comment">// [6.1] Tuple types Containers </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TN</span><span class="special">></span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">&,</span> <span class="identifier">T2</span><span class="special">&,</span> <span class="special">...,</span> <span class="identifier">TN</span><span class="special">&></span> <span class="identifier">tie</span><span class="special">(</span><span class="identifier">T1</span><span class="special">&,</span> <span class="identifier">T2</span><span class="special">&</span> <span class="special">,</span> <span class="special">...,</span> <span class="identifier">TN</span><span class="special">&);</span> <span class="comment">// [6.1.3.3] Tuple helper classes </span><span class="keyword">template</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">tuple_size</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</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">tuple_element</span><span class="special">;</span> <span class="comment">// [6.1.3.4] Element access </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TN</span><span class="special">></span> <span class="identifier">RI</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TN</span><span class="special">>&);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TN</span><span class="special">></span> <span class="identifier">PI</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TN</span><span class="special">>&);</span> <span class="comment">// [6.1.3.5] relational operators </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">>(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><=(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">TM</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="keyword">class</span> <span class="identifier">UM</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">>=(</span><span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">TM</span><span class="special">>&,</span> <span class="keyword">const</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">U1</span><span class="special">,</span> <span class="identifier">U2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">UM</span><span class="special">>&);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_TUPLE if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known issues for conforming compilers. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.utility"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.utility" title="Tuple Interface to std::pair."> Tuple Interface to std::pair.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">utility</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">utility</span><span class="special">></span> </pre> <p> The existing class template std::pair, can also be accessed using the <a class="link" href="subject_list.html#boost_tr1.subject_list.tuple" title="Tuples.">tuple interface</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</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">tuple_size</span><span class="special">;</span> <span class="comment">// forward declaration </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</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">tuple_element</span><span class="special">;</span> <span class="comment">// forward declaration </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">tuple_size</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">></span> <span class="special">>;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">tuple_element</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">></span> <span class="special">>;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">tuple_element</span><span class="special"><</span><span class="number">1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T2</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">></span> <span class="special">>;</span> <span class="comment">// see below for definition of "P". </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">></span> <span class="identifier">P</span><span class="special">&</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">>&);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">>&);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_UTILITY if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.array"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.array" title="Fixed Size Array."> Fixed Size Array.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">array</span><span class="special">></span> </pre> <p> Class template array is a fixed size array that is safer than and no less efficient than a C style array. Class array fulfils almost all of the requirements of a reversible-container (see Section 23.1, [lib.container.requirements] of the C++ Standard). For more information refer to the <a href="../../../libs/array/index.html" target="_top">Boost.Array documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [6.2.2] Class template array </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">></span> <span class="keyword">struct</span> <span class="identifier">array</span><span class="special">;</span> <span class="comment">// Array comparisons </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">></span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">>=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="comment">// [6.2.2.2] Specialized algorithms </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="comment">// [6.2.2.5] Tuple interface to class template array </span><span class="keyword">template</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">tuple_size</span><span class="special">;</span> <span class="comment">// forward declaration </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</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">tuple_element</span><span class="special">;</span> <span class="comment">// forward declaration </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">tuple_size</span><span class="special"><</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span> <span class="special">>;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">tuple_element</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span> <span class="special">>;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">get</span><span class="special">(</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">>&);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">array</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">>&);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_ARRAY if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known issues as of Boost-1.34 onwards. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.hash"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.hash" title="Hash Function Objects."> Hash Function Objects.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">functional</span><span class="special">></span> </pre> <p> Class template std::hash is a unary-functor that converts some type T into a hash-value, specializations of std::hash are provided for integer, character, floating point, and pointer types, plus the two string types std::string and std::wstring. See the <a href="../../../libs/functional/hash/index.html" target="_top">Boost.Hash</a> documentation for more information. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">hash</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">unary_function</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">size_t</span><span class="special">></span> <span class="special">{</span> <span class="identifier">size_t</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="identifier">val</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span> <span class="special">};</span> <span class="comment">// Hash function specializations </span><span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">bool</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">char</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">signed</span> <span class="keyword">char</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">short</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">int</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">long</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">float</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">double</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>;</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">T</span><span class="special">*>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>;</span> <span class="keyword">template</span> <span class="special"><></span> <span class="keyword">struct</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">>;</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_HASH if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> Boost.Hash adds specialisations of std::hash for a wider range of types than those required by TR1: Boost.Hash acts as a testbed for issue 6.18 in the <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf" target="_top">Library Extension Technical Report Issues List</a>. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.regex"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.regex" title="Regular Expressions."> Regular Expressions.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">regex</span><span class="special">></span> </pre> <p> This library provides comprehensive support for regular expressions, including either iterator or string based matching, searching, search-and-replace, iteration, and tokenization. Both POSIX and ECMAScript (JavaScript) regular expressions are supported. For more information see the <a href="../../../libs/regex/index.html" target="_top">Boost.Regex documentation</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [7.5] Regex constants </span><span class="keyword">namespace</span> <span class="identifier">regex_constants</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">bitmask_type</span> <span class="identifier">syntax_option_type</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">bitmask_type</span> <span class="identifier">match_flag_type</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">implementation</span><span class="special">-</span><span class="identifier">defined</span> <span class="identifier">error_type</span><span class="special">;</span> <span class="special">}</span> <span class="comment">// namespace regex_constants </span> <span class="comment">// [7.6] Class regex_error </span><span class="keyword">class</span> <span class="identifier">regex_error</span><span class="special">;</span> <span class="comment">// [7.7] Class template regex_traits </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">></span> <span class="keyword">struct</span> <span class="identifier">regex_traits</span><span class="special">;</span> <span class="comment">// [7.8] Class template basic_regex </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span> <span class="special">=</span> <span class="identifier">regex_traits</span><span class="special"><</span><span class="identifier">charT</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">basic_regex</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span> <span class="identifier">regex</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">></span> <span class="identifier">wregex</span><span class="special">;</span> <span class="comment">// [7.8.6] basic_regex swap </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e1</span><span class="special">,</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e2</span><span class="special">);</span> <span class="comment">// [7.9] Class template sub_match </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> <span class="keyword">class</span> <span class="identifier">sub_match</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*></span> <span class="identifier">csub_match</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*></span> <span class="identifier">wcsub_match</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">ssub_match</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">wssub_match</span><span class="special">;</span> <span class="comment">// [7.9.2] sub_match non-member operators </span> <span class="comment">/* Comparison operators omitted for clarity.... */</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ST</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BiIter</span><span class="special">></span> <span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">>&</span> <span class="keyword">operator</span><span class="special"><<(</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BiIter</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">);</span> <span class="comment">// [7.10] Class template match_results </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="identifier">allocator</span><span class="special"><</span><span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">match_results</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*></span> <span class="identifier">cmatch</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*></span> <span class="identifier">wcmatch</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">smatch</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">wsmatch</span><span class="special">;</span> <span class="comment">// match_results comparisons </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m2</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">></span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m2</span><span class="special">);</span> <span class="comment">// [7.10.6] match_results swap </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m1</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m2</span><span class="special">);</span> <span class="comment">// [7.11.2] Function template regex_match </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">BidirectionalIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">BidirectionalIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*</span> <span class="identifier">str</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">ST</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">SA</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>&</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>::</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*</span> <span class="identifier">str</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">ST</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">SA</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_match</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>&</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="comment">// [7.11.3] Function template regex_search </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="identifier">BidirectionalIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="identifier">BidirectionalIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*</span> <span class="identifier">str</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">charT</span><span class="special">*</span> <span class="identifier">str</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">ST</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">SA</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>&</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">ST</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">SA</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">regex_search</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>&</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">match_results</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">ST</span><span class="special">,</span> <span class="identifier">SA</span><span class="special">>::</span><span class="identifier">const_iterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="comment">// [7.11.4] Function template regex_replace </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">></span> <span class="identifier">OutputIterator</span> <span class="identifier">regex_replace</span><span class="special">(</span><span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">>&</span> <span class="identifier">fmt</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">></span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">></span> <span class="identifier">regex_replace</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">>&</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_regex</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">e</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">charT</span><span class="special">>&</span> <span class="identifier">fmt</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="comment">// [7.12.1] Class template regex_iterator </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span> <span class="special">=</span> <span class="identifier">regex_traits</span><span class="special"><</span><span class="identifier">charT</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">regex_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_iterator</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*></span> <span class="identifier">cregex_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_iterator</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*></span> <span class="identifier">wcregex_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_iterator</span><span class="special"><</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">sregex_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_iterator</span><span class="special"><</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">wsregex_iterator</span><span class="special">;</span> <span class="comment">// [7.12.2] Class template regex_token_iterator </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span> <span class="special">=</span> <span class="identifier">regex_traits</span><span class="special"><</span><span class="identifier">charT</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">regex_token_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_token_iterator</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*></span> <span class="identifier">cregex_token_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_token_iterator</span><span class="special"><</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*></span> <span class="identifier">wcregex_token_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_token_iterator</span><span class="special"><</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">sregex_token_iterator</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">regex_token_iterator</span><span class="special"><</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">></span> <span class="identifier">wsregex_token_iterator</span><span class="special">;</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_REGEX if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.complex"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.complex" title="Complex Number Algorithm Overloads."> Complex Number Algorithm Overloads.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">complex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">complex</span><span class="special">></span> </pre> <p> The following function templates have additional overloads: <code class="computeroutput"><span class="identifier">arg</span></code>, <code class="computeroutput"><span class="identifier">norm</span></code>, <code class="computeroutput"><span class="identifier">conj</span></code>, <code class="computeroutput"><span class="identifier">polar</span></code>, <code class="computeroutput"><span class="identifier">imag</span></code>, and <code class="computeroutput"><span class="identifier">real</span></code>. </p> <p> The additional overloads are sufficient to ensure: </p> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> If the argument has type <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>, then the overload behaves as if the argument had been cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span></code>. </li> <li class="listitem"> Otherwise, if the argument has type <code class="computeroutput"><span class="keyword">double</span></code> or is an integer type, then the overload behaves as if the argument had been cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span></code>. </li> <li class="listitem"> Otherwise, if the argument has type <code class="computeroutput"><span class="keyword">float</span></code>, then the overload behaves as if the argument had been cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span></code>. </li> </ul></div> <p> The function template <code class="computeroutput"><span class="identifier">pow</span></code> has additional overloads sufficient to ensure, for a call with at least one argument of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>: </p> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> If either argument has type <code class="computeroutput"><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span></code> or type <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>, then the overload behaves as if both arguments were cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span></code> </li> <li class="listitem"> Otherwise, if either argument has type <code class="computeroutput"><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span></code>, <code class="computeroutput"><span class="keyword">double</span></code>, or an integer type, then the overload behaves as if both arguments were cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span></code> </li> <li class="listitem"> Otherwise, if either argument has type <code class="computeroutput"><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span></code> or <code class="computeroutput"><span class="keyword">float</span></code>, then the overload behaves as if both arguments were cast to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span></code> </li> </ul></div> <p> In the following synopsis, <code class="computeroutput"><span class="identifier">Real</span></code> is a floating point type, <code class="computeroutput"><span class="identifier">Arithmetic</span></code> is an integer or floating point type, and <code class="computeroutput"> <span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">X1</span> <span class="special">...</span> <span class="identifier">XN</span><span class="special">)</span></code> is the largest floating point type in the list X1 to XN, after any non-floating point types in the list have been replaced by the type <code class="computeroutput"><span class="keyword">double</span></code>. </p> <pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic</span><span class="special">)</span> <span class="identifier">arg</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</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="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic</span><span class="special">)</span> <span class="identifier">norm</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</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="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic</span><span class="special">)></span> <span class="identifier">conj</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</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="identifier">Arithmetic1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Arithmetic2</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic1</span><span class="special">,</span><span class="identifier">Arithmetic2</span><span class="special">)></span> <span class="identifier">polar</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic1</span><span class="special">&</span> <span class="identifier">rho</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Arithmetic2</span><span class="special">&</span> <span class="identifier">theta</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic</span><span class="special">)</span> <span class="identifier">imag</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</span> <span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Arithmetic</span><span class="special">)</span> <span class="identifier">real</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</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="identifier">Real1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Real2</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Real1</span><span class="special">,</span> <span class="identifier">Real2</span><span class="special">)></span> <span class="identifier">pow</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">Real1</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">Real2</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Arithmetic</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Real</span><span class="special">,</span> <span class="identifier">Arithmetic</span><span class="special">)></span> <span class="identifier">pow</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">Real</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Arithmetic</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">PROMOTE</span><span class="special">(</span><span class="identifier">Real</span><span class="special">,</span> <span class="identifier">Arithmetic</span><span class="special">)></span> <span class="identifier">pow</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">Arithmetic</span><span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">Real</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> </pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_COMPLEX_OVERLOADS if your standard library implements the additional overloads for the existing complex arithmetic functions. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.complex_trig"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.complex_trig" title="Complex Number Additional Algorithms."> Complex Number Additional Algorithms.</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">complex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">complex</span><span class="special">></span> </pre> <p> The algorithms <code class="computeroutput"><span class="identifier">acos</span></code>, <code class="computeroutput"><span class="identifier">asin</span></code>, <code class="computeroutput"><span class="identifier">atan</span></code>, <code class="computeroutput"><span class="identifier">acosh</span></code>, <code class="computeroutput"><span class="identifier">asinh</span></code>, <code class="computeroutput"><span class="identifier">atanh</span></code> and <code class="computeroutput"><span class="identifier">fabs</span></code> are overloaded for arguments of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>. These algorithms are entirely classical, and behave as specified in the C99 standard section 7.3.5. See the <a href="../../../libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html" target="_top">Boost.Math documentation for more information</a>. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">acos</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">asin</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">atan</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">acosh</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">asinh</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">atanh</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">complex</span><span class="special"><</span><span class="identifier">T</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG if your standard library implements the additional inverse trig functions. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known problems. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.unordered_set"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.unordered_set" title="Unordered Associative Set (Hash Table)."> Unordered Associative Set (Hash Table).</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">unordered_set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">unordered_set</span><span class="special">></span> </pre> <p> For accessing data based on key lookup, the C++ standard library offers std::set, std::map, std::multiset and std::multimap. These are generally implemented using balanced binary trees so that lookup time has logarithmic complexity. That is generally okay, but in many cases a hash table can perform better, as accessing data has constant complexity, on average. The worst case complexity is linear, but that occurs rarely and with some care, can be avoided. </p> <p> With this in mind, the C++ Standard Library Technical Report introduced the unordered associative containers, which are implemented using hash tables, and they have now been added to the Working Draft of the C++ Standard. </p> <p> Refer to the <a href="../../../libs/unordered/index.html" target="_top">Unordered Library docs</a> for more information. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">Value</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">Value</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">unordered_set</span><span class="special">;</span> <span class="comment">// [6.3.4.5] Class template unordered_multiset </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Hash</span> <span class="special">=</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">Value</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">Value</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">unordered_multiset</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unordered_set</span><span class="special"><</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">unordered_set</span><span class="special"><</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unordered_multiset</span><span class="special"><</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">unordered_multiset</span><span class="special"><</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_UNORDERED_SET if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known issues for conforming compilers. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.unordered_map"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.unordered_map" title="Unordered Associative Map (Hash Table)."> Unordered Associative Map (Hash Table).</a> </h3></div></div></div> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tr1</span><span class="special">/</span><span class="identifier">unordered_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> </pre> <p> or </p> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">unordered_map</span><span class="special">></span> </pre> <p> For accessing data based on key lookup, the C++ standard library offers std::set, std::map, std::multiset and std::multimap. These are generally implemented using balanced binary trees so that lookup time has logarithmic complexity. That is generally okay, but in many cases a hash table can perform better, as accessing data has constant complexity, on average. The worst case complexity is linear, but that occurs rarely and with some care, can be avoided. </p> <p> With this in mind, the C++ Standard Library Technical Report introduced the unordered associative containers, which are implemented using hash tables, and they have now been added to the Working Draft of the C++ Standard. </p> <p> Refer to the <a href="../../../libs/unordered/index.html" target="_top">Unordered Library docs</a> for more information. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [6.3.4.4] Class template unordered_map </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Key</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">Hash</span> <span class="special">=</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">unordered_map</span><span class="special">;</span> <span class="comment">// [6.3.4.6] Class template unordered_multimap </span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Key</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">Hash</span> <span class="special">=</span> <span class="identifier">hash</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Pred</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="keyword">class</span> <span class="identifier">unordered_multimap</span><span class="special">;</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Key</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">Hash</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unordered_map</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">unordered_map</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Key</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">Hash</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Alloc</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unordered_multimap</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">unordered_multimap</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Hash</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">>&</span> <span class="identifier">y</span><span class="special">);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Configuration:</strong></span> <a href="../../../libs/config/index.html" target="_top">Boost.Config</a> should (automatically) define the macro BOOST_HAS_TR1_UNORDERED_MAP if your standard library implements this part of TR1. </p> <p> <span class="bold"><strong>Standard Conformity:</strong></span> No known issues for conforming compilers. </p> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.special"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.special" title="Mathematical Special Functions."> Mathematical Special Functions.</a> </h3></div></div></div> <p> The TR adds 23 special functions (plus float and long double overloads) to header <cmath>. </p> <p> Refer to the <a href="../../../libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html" target="_top">Math Library docs</a> for more information. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// [5.2.1.1] associated Laguerre polynomials: </span><span class="keyword">double</span> <span class="identifier">assoc_laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">assoc_laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.2] associated Legendre functions: </span><span class="keyword">double</span> <span class="identifier">assoc_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">assoc_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">assoc_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.3] beta function: </span><span class="keyword">double</span> <span class="identifier">beta</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">betaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">betal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="comment">// [5.2.1.4] (complete) elliptic integral of the first kind: </span><span class="keyword">double</span> <span class="identifier">comp_ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">comp_ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span> <span class="comment">// [5.2.1.5] (complete) elliptic integral of the second kind: </span><span class="keyword">double</span> <span class="identifier">comp_ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">comp_ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">);</span> <span class="comment">// [5.2.1.6] (complete) elliptic integral of the third kind: </span><span class="keyword">double</span> <span class="identifier">comp_ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">comp_ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">comp_ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">);</span> <span class="comment">// [5.2.1.7] confluent hypergeometric functions: </span><span class="keyword">double</span> <span class="identifier">conf_hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">conf_hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">conf_hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.8] regular modified cylindrical Bessel functions: </span><span class="keyword">double</span> <span class="identifier">cyl_bessel_i</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">cyl_bessel_if</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_il</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.9] cylindrical Bessel functions (of the first kind): </span><span class="keyword">double</span> <span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">cyl_bessel_jf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_jl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.10] irregular modified cylindrical Bessel functions: </span><span class="keyword">double</span> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">cyl_bessel_kf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_bessel_kl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.11] cylindrical Neumann functions; </span><span class="comment">// cylindrical Bessel functions (of the second kind): </span><span class="keyword">double</span> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">cyl_neumannf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cyl_neumannl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.12] (incomplete) elliptic integral of the first kind: </span><span class="keyword">double</span> <span class="identifier">ellint_1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">ellint_1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="comment">// [5.2.1.13] (incomplete) elliptic integral of the second kind: </span><span class="keyword">double</span> <span class="identifier">ellint_2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">ellint_2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="comment">// [5.2.1.14] (incomplete) elliptic integral of the third kind: </span><span class="keyword">double</span> <span class="identifier">ellint_3</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">ellint_3f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">phi</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">ellint_3l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">k</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nu</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">phi</span><span class="special">);</span> <span class="comment">// [5.2.1.15] exponential integral: </span><span class="keyword">double</span> <span class="identifier">expint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">expintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.16] Hermite polynomials: </span><span class="keyword">double</span> <span class="identifier">hermite</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">hermitef</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hermitel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.17] hypergeometric functions: </span><span class="keyword">double</span> <span class="identifier">hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.18] Laguerre polynomials: </span><span class="keyword">double</span> <span class="identifier">laguerre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">laguerref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">laguerrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.19] Legendre polynomials: </span><span class="keyword">double</span> <span class="identifier">legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.20] Riemann zeta function: </span><span class="keyword">double</span> <span class="identifier">riemann_zeta</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">riemann_zetaf</span><span class="special">(</span><span class="keyword">float</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">riemann_zetal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">);</span> <span class="comment">// [5.2.1.21] spherical Bessel functions (of the first kind): </span><span class="keyword">double</span> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">sph_besself</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_bessell</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.22] spherical associated Legendre functions: </span><span class="keyword">double</span> <span class="identifier">sph_legendre</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">sph_legendref</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">theta</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_legendrel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">l</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">theta</span><span class="special">);</span> <span class="comment">// [5.2.1.23] spherical Neumann functions; </span><span class="comment">// spherical Bessel functions (of the second kind): </span><span class="keyword">double</span> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">sph_neumannf</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sph_neumannl</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="special">}</span> <span class="comment">// namespace tr1 </span><span class="special">}</span> <span class="comment">// namespace std </span></pre> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The following functions are not supported in the Boost version of this component: </p> <pre class="programlisting"><span class="comment">// [5.2.1.7] confluent hypergeometric functions: </span><span class="keyword">double</span> <span class="identifier">conf_hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">conf_hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">conf_hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// [5.2.1.17] hypergeometric functions: </span><span class="keyword">double</span> <span class="identifier">hyperg</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">hypergf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypergl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> </pre> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="boost_tr1.subject_list.c99_special"></a><a class="link" href="subject_list.html#boost_tr1.subject_list.c99_special" title="C99 Mathematical Special Functions."> C99 Mathematical Special Functions.</a> </h3></div></div></div> <p> The TR adds a number of special functions which were first introduced in the C99 standard to header <cmath>. </p> <p> Refer to the <a href="../../../libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html" target="_top">Math Library docs</a> for more information. </p> <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tr1</span> <span class="special">{</span> <span class="comment">// types </span> <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">double_t</span><span class="special">;</span> <span class="keyword">typedef</span> <span class="identifier">floating</span><span class="special">-</span><span class="identifier">type</span> <span class="identifier">float_t</span><span class="special">;</span> <span class="comment">// functions </span> <span class="keyword">double</span> <span class="identifier">acosh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">acoshf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">acoshl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">asinh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">asinhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">asinhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">atanh</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">atanhf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">atanhl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">cbrt</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">cbrtf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">cbrtl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">copysign</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">copysignf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">copysignl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">erf</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">erff</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">erfc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">erfcf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">erfcl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">exp2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">exp2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">exp2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">expm1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">expm1f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">expm1l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fdim</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fdimf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fdiml</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fmaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fmax</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fmaxf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmaxl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fmin</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fminf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fminl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">hypot</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">hypotf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">hypotl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">lgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">lgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">lgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">log1p</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">log1pf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log1pl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">log2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">log2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">logb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">logbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">logbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lround</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lroundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lroundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nan</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nanf</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nanl</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nearbyintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nearbyintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nextafter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nextafterf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nextafterl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nexttoward</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nexttowardf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nexttowardl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">remainder</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">remainderf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remainderl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">remquo</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">remquof</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remquol</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">rint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">rintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">rintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">round</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">roundf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">roundl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">scalbln</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">scalblnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalblnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">scalbn</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">scalbnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalbnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">tgamma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">tgammaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">tgammal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">trunc</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">truncf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">truncl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// C99 macros defined as C++ templates </span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">signbit</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">int</span> <span class="identifier">fpclassify</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isfinite</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isinf</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isnan</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isnormal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isgreater</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isgreaterequal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isless</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">islessequal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">islessgreater</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isunordered</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="special">}}</span> <span class="comment">// namespaces </span></pre> <p> <span class="bold"><strong>Standard Conformity:</strong></span> The following functions are not supported in the Boost version of this component: </p> <pre class="programlisting"><span class="keyword">double</span> <span class="identifier">exp2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">exp2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">exp2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fdim</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fdimf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fdiml</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">fma</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">fmaf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">fmal</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">int</span> <span class="identifier">ilogbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">llrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">log2</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">log2f</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">log2l</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">logb</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">logbf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">logbl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="identifier">lrintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nan</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nanf</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nanl</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">str</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">nearbyintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">nearbyintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">remainder</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">remainderf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remainderl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">remquo</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">remquof</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">remquol</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">int</span> <span class="special">*</span><span class="identifier">pquo</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">rint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">rintf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">rintl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">scalbln</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">scalblnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalblnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">double</span> <span class="identifier">scalbn</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">float</span> <span class="identifier">scalbnf</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">scalbnl</span><span class="special">(</span><span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ex</span><span class="special">);</span> <span class="comment">// C99 macros defined as C++ templates </span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isgreater</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isgreaterequal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isless</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">islessequal</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">islessgreater</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">bool</span> <span class="identifier">isunordered</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">y</span><span class="special">);</span> </pre> </div> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> <td align="right"><div class="copyright-footer">Copyright © 2005 John Maddock<p> Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) </p> </div></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="config.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_tr1.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="header_list.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html>