<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: mshadow::expr::ShapeCheck&lt; srcdim, SliceExExp&lt; SrcExp, Device, DType, srcdim &gt; &gt; Struct Template Reference</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" />
</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="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">mxnet
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacemshadow.html">mshadow</a></li><li class="navelem"><a class="el" href="namespacemshadow_1_1expr.html">expr</a></li><li class="navelem"><a class="el" href="structmshadow_1_1expr_1_1ShapeCheck_3_01srcdim_00_01SliceExExp_3_01SrcExp_00_01Device_00_01DType_00_01srcdim_01_4_01_4.html">ShapeCheck&lt; srcdim, SliceExExp&lt; SrcExp, Device, DType, srcdim &gt; &gt;</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="structmshadow_1_1expr_1_1ShapeCheck_3_01srcdim_00_01SliceExExp_3_01SrcExp_00_01Device_00_01DType_00_01srcdim_01_4_01_4-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">mshadow::expr::ShapeCheck&lt; srcdim, SliceExExp&lt; SrcExp, Device, DType, srcdim &gt; &gt; Struct Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="slice__ex_8h_source.html">slice_ex.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for mshadow::expr::ShapeCheck&lt; srcdim, SliceExExp&lt; SrcExp, Device, DType, srcdim &gt; &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="structmshadow_1_1expr_1_1ShapeCheck_3_01srcdim_00_01SliceExExp_3_01SrcExp_00_01Device_00_01DTyped5d7d5a4f0f97be3b2f61caa266c8672.png" border="0" usemap="#mshadow_1_1expr_1_1ShapeCheck_3_01srcdim_00_01SliceExExp_3_01SrcExp_00_01Device_00_01DType_00_01srcdim_01_4_01_4_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a45604e9cfb0057626e92d095acca7b15"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmshadow_1_1Shape.html">Shape</a>&lt; srcdim &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmshadow_1_1expr_1_1ShapeCheck_3_01srcdim_00_01SliceExExp_3_01SrcExp_00_01Device_00_01DType_00_01srcdim_01_4_01_4.html#a45604e9cfb0057626e92d095acca7b15">Check</a> (const <a class="el" href="structmshadow_1_1expr_1_1SliceExExp.html">SliceExExp</a>&lt; SrcExp, Device, DType, srcdim &gt; &amp;t)</td></tr>
<tr class="separator:a45604e9cfb0057626e92d095acca7b15"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a45604e9cfb0057626e92d095acca7b15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45604e9cfb0057626e92d095acca7b15">&#9670;&nbsp;</a></span>Check()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename SrcExp , typename Device , typename DType , int srcdim&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structmshadow_1_1Shape.html">Shape</a>&lt;srcdim&gt; <a class="el" href="structmshadow_1_1expr_1_1ShapeCheck.html">mshadow::expr::ShapeCheck</a>&lt; srcdim, <a class="el" href="structmshadow_1_1expr_1_1SliceExExp.html">SliceExExp</a>&lt; SrcExp, Device, DType, srcdim &gt; &gt;::Check </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmshadow_1_1expr_1_1SliceExExp.html">SliceExExp</a>&lt; SrcExp, Device, DType, srcdim &gt; &amp;&#160;</td>
          <td class="paramname"><em>t</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>/work/mxnet/3rdparty/mshadow/mshadow/extension/<a class="el" href="slice__ex_8h_source.html">slice_ex.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:41 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
