<HTML>
<!--
     Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000
    
     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)
  -->
<Head>
<Title>Identity Property Map</Title>
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 
	ALINK="#ff0000"> 
<IMG SRC="../../../boost.png" 
     ALT="C++ Boost" width="277" height="86"> 

<BR Clear>

<H2><A NAME="sec:identity-property-map"></A>
</h2>
<PRE>
identity_property_map
</PRE>

This property map applies the identity function, that is, it just
returns a copy of the key object that was input.

<H3>Where Defined</H3>

<P>
<a href="../../../boost/property_map/property_map.hpp"><TT>boost/property_map/property_map.hpp</TT></a>

<h3>Model of</h3>

<a href="./ReadablePropertyMap.html">Readable Property Map</a>

<h3>Associated Types</h3>

<table border>
<tr>
<th>Type</th><th>Description</th>
</tr>

<tr>
<td><tt>
boost::property_traits&lt;identity_property_map&gt;::value_type
</tt></td>
<td>
This type is <tt>std::size_t</tt>; the map functions are templated.
</td>
</tr>

<tr>
<td><tt>
boost::property_traits&lt;identity_property_map&gt;::key_type
</tt></td>
<td>
This type is <tt>std::size_t</tt>; the map functions are templated.
</td>
</tr>

<tr>
<td><tt>
boost::property_traits&lt;identity_property_map&gt;::category
</tt></td>
<td>
This type is <tt>boost::readable_op_bracket_tag</tt>.
</td>
</tr>

</table>

<h3>Member Functions</h3>

<table border>
<tr>
<th>Member</th><th>Description</th>
</tr>


<tr>
<td><tt>
identity_property_map()
</tt></td>
<td>
Default constructor.
</td>
</tr>

<tr>
<td><tt>
identity_property_map(const identity_property_map&amp; x)
</tt></td>
<td>
Copy constructor.
</td>
</tr>

<tr>
<td><tt>
template &lt;class T&gt;<br>
T operator[](T x) const
</tt></td>
<td>
Returns a copy of object <tt>x</tt>.
</td>
</tr>

</table>

<h3>Non-Member Functions</h3>

<table border>
<tr>
<th>Member</th><th>Description</th>
</tr>

<tr>
<td><tt>
template &lt;class T&gt;<br>
T get(const identity_property_map& pmap, T x)
</tt></td>
<td>
Returns a copy of object <tt>x</tt>.
</td>
</tr>

</table>


<br>
<HR>
<TABLE>
<TR valign=top>
<TD nowrap>Copyright &copy 2000</TD><TD>
<a HREF="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</a>,
Univ.of Notre Dame (<A
HREF="mailto:jsiek@lsc.nd.edu">jsiek@lsc.nd.edu</A>)<br>
<A HREF="http://www.boost.org/people/liequan_lee.htm">Lie-Quan Lee</A>, Univ.of Notre Dame (<A HREF="mailto:llee1@lsc.nd.edu">llee1@lsc.nd.edu</A>)<br>
<A HREF="http://www.lsc.nd.edu/~lums">Andrew Lumsdaine</A>,
Univ.of Notre Dame (<A
HREF="mailto:lums@lsc.nd.edu">lums@lsc.nd.edu</A>)
</TD></TR></TABLE>

</BODY>
</HTML> 
