<!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.7.5/cppdoc/namespacemembers.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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<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>
<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.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></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">
<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div>

<h3><a id="index_d"></a>- d -</h3><ul>
<li>DFLT_CFG
: <a class="el" href="namespaceignite.html#ac3187647ce756893682aedb63993a4fc">ignite</a>
</li>
</ul>


<h3><a id="index_f"></a>- f -</h3><ul>
<li>factoryLock
: <a class="el" href="namespaceignite.html#a5140415d3b8b40ecd43aa83597d84627">ignite</a>
</li>
</ul>


<h3><a 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 id="index_j"></a>- j -</h3><ul>
<li>JVM_LIB_LOADED
: <a class="el" href="namespaceignite.html#ac18638cf1e1e9d64caf401ac105b5122">ignite</a>
</li>
<li>JvmMemoryString()
: <a class="el" href="namespaceignite.html#ae3921cbc337d32fd43b1fce5b1d663a6">ignite</a>
</li>
</ul>


<h3><a 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#ac1523106a14156cf653b3366d92562cd">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 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>


<h3><a id="index_s"></a>- s -</h3><ul>
<li>started
: <a class="el" href="namespaceignite.html#a340fa66fbb410168be7d201fd48d9515">ignite</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 4 2019 17:13:59 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.13
</small></address>
</body>
</html>
