<!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">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.4.0/cppdoc/namespacemembers_func.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>&nbsp; Apache Ignite C++: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">&nbsp; Apache Ignite C++
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
      <li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="navrow3" class="tabs2">
    <ul class="tablist">
      <li><a href="namespacemembers.html"><span>All</span></a></li>
      <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
      <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
    </ul>
  </div>
  <div id="navrow4" class="tabs3">
    <ul class="tablist">
      <li><a href="#index_g"><span>g</span></a></li>
      <li><a href="#index_j"><span>j</span></a></li>
      <li><a href="#index_m"><span>m</span></a></li>
      <li class="current"><a href="#index_o"><span>o</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="contents">
&#160;

<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
<li>GetBinaryStringHashCode()
: <a class="el" href="namespaceignite_1_1binary.html#ac93fb79680cc0baff9d1d6bd6e44139a">ignite::binary</a>
</li>
</ul>


<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
<li>JvmMemoryString()
: <a class="el" href="namespaceignite.html#ae3921cbc337d32fd43b1fce5b1d663a6">ignite</a>
</li>
</ul>


<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>MakeConstReference()
: <a class="el" href="namespaceignite.html#ae78424fdffadc92e84b815d5df9c6fee">ignite</a>
</li>
<li>MakeConstReferenceFromCopy()
: <a class="el" href="namespaceignite.html#a713b8934e0021d44b99f15acae86efe2">ignite</a>
</li>
<li>MakeConstReferenceFromOwningPointer()
: <a class="el" href="namespaceignite.html#a6b46914ac275250143be90e5bc2411e2">ignite</a>
</li>
<li>MakeConstReferenceFromSmartPointer()
: <a class="el" href="namespaceignite.html#a4d056cf27c881af6b06bda130d0f64ed">ignite</a>
</li>
<li>MakeReference()
: <a class="el" href="namespaceignite.html#a55790b7e48e45cd757e7d34aacc4357a">ignite</a>
</li>
<li>MakeReferenceFromCopy()
: <a class="el" href="namespaceignite.html#a1876725dc2d3119c5a0b15cf417aa1d0">ignite</a>
</li>
<li>MakeReferenceFromOwningPointer()
: <a class="el" href="namespaceignite.html#a700a57aef7b1a3ebd13feed33dcf4170">ignite</a>
</li>
<li>MakeReferenceFromSmartPointer()
: <a class="el" href="namespaceignite.html#a01845a228a65220aed4fa281e408c610">ignite</a>
</li>
</ul>


<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>operator!=()
: <a class="el" href="namespaceignite.html#a0fc5f4a76b8b2baa65893fc9c46c4935">ignite</a>
</li>
<li>operator&lt;()
: <a class="el" href="namespaceignite.html#a05f483ce8d5b7091fb53781cae54bb1d">ignite</a>
</li>
<li>operator&lt;&lt;()
: <a class="el" href="namespaceignite.html#ac26d447ad00c0ca3a8bfa309732e82cb">ignite</a>
</li>
<li>operator&lt;=()
: <a class="el" href="namespaceignite.html#a071c9365622edf5052bd94f0f48ef238">ignite</a>
</li>
<li>operator==()
: <a class="el" href="namespaceignite.html#ae5d0f7c98f6e8344f182dbccbe5de9fc">ignite</a>
</li>
<li>operator&gt;()
: <a class="el" href="namespaceignite.html#a3dbac40975f814dfc085e7c5550b37a5">ignite</a>
</li>
<li>operator&gt;=()
: <a class="el" href="namespaceignite.html#a5fb762a963d54d4cc6ea41667636bb91">ignite</a>
</li>
<li>operator&gt;&gt;()
: <a class="el" href="namespaceignite.html#a28f6f15d40523f15436326d3376bd307">ignite</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 5 2018 10:33:58 for &nbsp; Apache Ignite C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
