<!-- 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: kth_semantic_element_const_reference_type Struct 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_0561.html">kth_semantic_element_const_reference_type</a>
  </div>
<div class="contents">
<h1>kth_semantic_element_const_reference_type Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0114.html">kth_semantic_element_type, kth_semantic_element_reference_type, kth_semantic_element_const_reference_type, semantic_at_c</a>]</small>
</h1><!-- doxytag: class="boost::gil::kth_semantic_element_const_reference_type" --><code>#include &lt;<a class="el" href="g_i_l_0068.html">color_base_algorithm.hpp</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for kth_semantic_element_const_reference_type:</div>
<div class="dynsection">

<p><center><img src="g_i_l_0024.png" usemap="#kth_semantic_element_const_reference_type_map" border="0" alt=""></center>
<map name="kth_semantic_element_const_reference_type_map">
<area href="g_i_l_0440.html" alt="color_element_const_reference_type" shape="rect" coords="0,56,265,80">
</map>
</div>

<p>
<a href="g_i_l_0560.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename ColorBase, int K&gt;<br>
 struct boost::gil::kth_semantic_element_const_reference_type&lt; ColorBase, K &gt;</h3>

Specifies the return type of the constant semantic_at_c&lt;K&gt;(color_base);. <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="0c81a166dd021070709b34a99d440d63"></a><!-- doxytag: member="boost::gil::kth_semantic_element_const_reference_type::type" ref="0c81a166dd021070709b34a99d440d63" args="" -->
typedef <br>
kth_element_const_reference_type<br>
&lt; ColorBase, semantic_index &gt;<br>
::type&nbsp;</td><td class="memItemRight" valign="bottom"><b>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="c8173c609b0dabc5c884e715b5b60bf6"></a><!-- doxytag: member="boost::gil::kth_semantic_element_const_reference_type::BOOST_STATIC_CONSTANT" ref="c8173c609b0dabc5c884e715b5b60bf6" args="(int, semantic_index=(mpl::at_c&lt; typename ColorBase::layout_t::channel_mapping_t, K &gt;::type::value))" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>BOOST_STATIC_CONSTANT</b> (int, semantic_index=(mpl::at_c&lt; typename ColorBase::layout_t::channel_mapping_t, K &gt;::type::value))</td></tr>

<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f1813eef09dbebbe460626bc418c875a"></a><!-- doxytag: member="boost::gil::kth_semantic_element_const_reference_type::get" ref="f1813eef09dbebbe460626bc418c875a" args="(const ColorBase &amp;cb)" -->
static type&nbsp;</td><td class="memItemRight" valign="bottom"><b>get</b> (const ColorBase &amp;cb)</td></tr>

</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="g_i_l_0068.html">color_base_algorithm.hpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:17 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>
