<!-- Copyright 2008 Lubomir Bourdev and Hailin Jin

     Distributed under the Boost Software License, Version 1.0.
     (See accompanying file LICENSE_1_0.txt or copy at
     http://www.boost.org/LICENSE_1_0.txt)
  -->

<!--
    Copyright 2005-2007 Adobe Systems Incorporated
    Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
    or a copy at http://stlab.adobe.com/licenses.html)

    Some files are held under additional license.
    Please see "http://stlab.adobe.com/licenses.html" for more information.
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
    <TITLE>Generic Image Library: deref_compose Class Template Reference</TITLE>
    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/>
    <LINK TYPE="text/css" REL="stylesheet" HREF="adobe_source.css"/>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" style='width: 100%; margin: 0; padding: 0'><tr>
<td width="100%" valign="top" style='padding-left: 10px; padding-right: 10px; padding-bottom: 10px'>
<div class="qindex"><a class="qindex" href="index.html">Modules</a> 
                  | <a class="qindex" href="classes.html">Alphabetical List</a> 
                  | <a class="qindex" href="annotated.html">Class List</a> 
                  | <a class="qindex" href="dirs.html">Directories</a> 
                  | <a class="qindex" href="files.html">File List</a> 
                  | <a class="qindex" href="../index.html">GIL Home Page</a> 
</div>
<!-- End Header -->
<!-- Generated by Doxygen 1.5.6 -->
  <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<b>gil</b>::<a class="el" href="g_i_l_0024.html">deref_compose</a>
  </div>
<div class="contents">
<h1>deref_compose Class Template Reference<br>
<small>
[<a class="el" href="g_i_l_0186.html">Models</a>]</small>
</h1><!-- doxytag: class="boost::gil::deref_compose" --><!-- doxytag: inherits="boost::gil::deref_base" --><code>#include &lt;<a class="el" href="g_i_l_0642.html">utilities.hpp</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for deref_compose:</div>
<div class="dynsection">

<p><center><img src="g_i_l_0004.png" usemap="#deref_compose_map" border="0" alt=""></center>
<map name="deref_compose_map">
<area href="g_i_l_0475.html" alt="deref_base" shape="rect" coords="0,0,1104,24">
</map>
</div>

<p>
<a href="g_i_l_0023.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename D1, typename D2&gt;<br>
 class boost::gil::deref_compose&lt; D1, D2 &gt;</h3>

Composes two dereference function objects. Similar to std::unary_compose but needs to pull some typedefs from the component types. Models: <a class="el" href="g_i_l_0350.html" title="Represents a unary function object that can be invoked upon dereferencing a pixel...">PixelDereferenceAdaptorConcept</a>. <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fdbf121ada7bb303057b5b5decb6db49"></a><!-- doxytag: member="boost::gil::deref_compose::argument_type" ref="fdbf121ada7bb303057b5b5decb6db49" args="" -->
typedef D2::argument_type&nbsp;</td><td class="memItemRight" valign="bottom"><b>argument_type</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ecff708e38cbbf5954abfbf54a3f944"></a><!-- doxytag: member="boost::gil::deref_compose::result_type" ref="3ecff708e38cbbf5954abfbf54a3f944" args="" -->
typedef D1::result_type&nbsp;</td><td class="memItemRight" valign="bottom"><b>result_type</b></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7ad5518deba57aa35db893b6f037b8d"></a><!-- doxytag: member="boost::gil::deref_compose::deref_compose" ref="a7ad5518deba57aa35db893b6f037b8d" args="(const D1 &amp;x, const D2 &amp;y)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>deref_compose</b> (const D1 &amp;x, const D2 &amp;y)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fc74b575d85acaa8a504722f5dc2d7f3"></a><!-- doxytag: member="boost::gil::deref_compose::deref_compose" ref="fc74b575d85acaa8a504722f5dc2d7f3" args="(const deref_compose &amp;dc)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>deref_compose</b> (const <a class="el" href="g_i_l_0024.html">deref_compose</a> &amp;dc)</td></tr>

<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="2fd5a27429ecef5ac93beaf5a98521ed"></a><!-- doxytag: member="boost::gil::deref_compose::deref_compose" ref="2fd5a27429ecef5ac93beaf5a98521ed" args="(const deref_compose&lt; _D1, _D2 &gt; &amp;dc)" -->
template&lt;typename _D1, typename _D2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>deref_compose</b> (const <a class="el" href="g_i_l_0024.html">deref_compose</a>&lt; _D1, _D2 &gt; &amp;dc)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="125f66e1a3dfd9e5621235e8d4fb8b58"></a><!-- doxytag: member="boost::gil::deref_compose::operator()" ref="125f66e1a3dfd9e5621235e8d4fb8b58" args="(argument_type x) const " -->
result_type&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (argument_type x) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8bd11513346bc122922757642cfb5329"></a><!-- doxytag: member="boost::gil::deref_compose::operator()" ref="8bd11513346bc122922757642cfb5329" args="(argument_type x)" -->
result_type&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (argument_type x)</td></tr>

<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fbe38941175e93403e20454f43a45371"></a><!-- doxytag: member="boost::gil::deref_compose::_fn1" ref="fbe38941175e93403e20454f43a45371" args="" -->
D1&nbsp;</td><td class="memItemRight" valign="bottom"><b>_fn1</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3b5402cbecf2cb062d68afeb8fca26eb"></a><!-- doxytag: member="boost::gil::deref_compose::_fn2" ref="3b5402cbecf2cb062d68afeb8fca26eb" args="" -->
D2&nbsp;</td><td class="memItemRight" valign="bottom"><b>_fn2</b></td></tr>

</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="g_i_l_0642.html">utilities.hpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:18 2009 for Generic Image Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
