2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-22 03:42:19 +00:00
Files
ublas/doc/doxyfiles/html/a00602_source.html
David Bellot 11b1711474 new doxyfiles
[SVN r75573]
2011-11-20 14:50:03 +00:00

1670 lines
199 KiB
HTML

<!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>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Boost.uBlas: concepts.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<script type="text/javascript">
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
function toggleVisibility(linkObj) {
var base = linkObj.getAttribute('id');
var summary = document.getElementById(base + '-summary');
var content = document.getElementById(base + '-content');
var trigger = document.getElementById(base + '-trigger');
if ( hasClass(linkObj,'closed') ) {
summary.style.display = 'none';
content.style.display = 'block';
trigger.src = 'open.png';
removeClass(linkObj,'closed');
addClass(linkObj,'opened');
} else if ( hasClass(linkObj,'opened') ) {
summary.style.display = 'block';
content.style.display = 'none';
trigger.src = 'closed.png';
removeClass(linkObj,'opened');
addClass(linkObj,'closed');
}
return false;
}
</script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo boost ublas.png"></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.uBlas&#160;<span id="projectnumber">1.49</span></div>
<div id="projectbrief">Linear Algebra in C++: matrices, vectors and numeric algorithms</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli">
<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="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('a00602.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<h1>concepts.hpp</h1> </div>
</div>
<div class="contents">
<a href="a00602.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// Copyright (c) 2000-2002</span>
<a name="l00003"></a>00003 <span class="comment">// Joerg Walter, Mathias Koch</span>
<a name="l00004"></a>00004 <span class="comment">//</span>
<a name="l00005"></a>00005 <span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span>
<a name="l00006"></a>00006 <span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span>
<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009 <span class="comment">// The authors gratefully acknowledge the support of</span>
<a name="l00010"></a>00010 <span class="comment">// GeNeSys mbH &amp; Co. KG in producing this work.</span>
<a name="l00011"></a>00011 <span class="comment">//</span>
<a name="l00012"></a>00012
<a name="l00013"></a>00013 <span class="preprocessor">#ifndef _BOOST_UBLAS_CONCEPTS_</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define _BOOST_UBLAS_CONCEPTS_</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="comment">// Concept checks based on ideas of Jeremy Siek</span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>numeric { <span class="keyword">namespace </span>ublas {
<a name="l00021"></a>00021
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00024"></a><a class="code" href="a00163.html">00024</a> <span class="keyword">struct </span><a class="code" href="a00163.html">Indexed1DIteratorConcept</a> {
<a name="l00025"></a><a class="code" href="a00163.html#a2aec06e30fc53279ed9326aa60690692">00025</a> <span class="keyword">typedef</span> I <a class="code" href="a00163.html#a2aec06e30fc53279ed9326aa60690692">iterator_type</a>;
<a name="l00026"></a>00026
<a name="l00027"></a><a class="code" href="a00163.html#ae5901da20faa4fc8f6436d04591bdf27">00027</a> <span class="keywordtype">void</span> <a class="code" href="a00163.html#ae5901da20faa4fc8f6436d04591bdf27">constraints</a> () {
<a name="l00028"></a>00028 <a class="code" href="a00163.html#a2aec06e30fc53279ed9326aa60690692">iterator_type</a> it = <a class="code" href="a00163.html#a2aec06e30fc53279ed9326aa60690692">iterator_type</a> ();
<a name="l00029"></a>00029 <span class="comment">// Index</span>
<a name="l00030"></a>00030 it.index ();
<a name="l00031"></a>00031 }
<a name="l00032"></a>00032 };
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00035"></a><a class="code" href="a00171.html">00035</a> <span class="keyword">struct </span><a class="code" href="a00171.html">IndexedBidirectional1DIteratorConcept</a> {
<a name="l00036"></a><a class="code" href="a00171.html#a072761f2cf556f1f8358af6b7231cb94">00036</a> <span class="keyword">typedef</span> I <a class="code" href="a00171.html#a072761f2cf556f1f8358af6b7231cb94">iterator_type</a>;
<a name="l00037"></a>00037
<a name="l00038"></a><a class="code" href="a00171.html#af69435cef5ed2cd657404f541eef4286">00038</a> <span class="keywordtype">void</span> <a class="code" href="a00171.html#af69435cef5ed2cd657404f541eef4286">constraints</a> () {
<a name="l00039"></a>00039 function_requires&lt; BidirectionalIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00040"></a>00040 function_requires&lt; Indexed1DIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00041"></a>00041 }
<a name="l00042"></a>00042 };
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00045"></a><a class="code" href="a00339.html">00045</a> <span class="keyword">struct </span><a class="code" href="a00339.html">Mutable_IndexedBidirectional1DIteratorConcept</a> {
<a name="l00046"></a><a class="code" href="a00339.html#ad02c2fdf56553545eab47b3d5c0cac1c">00046</a> <span class="keyword">typedef</span> I <a class="code" href="a00339.html#ad02c2fdf56553545eab47b3d5c0cac1c">iterator_type</a>;
<a name="l00047"></a>00047
<a name="l00048"></a><a class="code" href="a00339.html#a1893e96e059efc936757aeed10de0b5e">00048</a> <span class="keywordtype">void</span> <a class="code" href="a00339.html#a1893e96e059efc936757aeed10de0b5e">constraints</a> () {
<a name="l00049"></a>00049 function_requires&lt; Mutable_BidirectionalIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00050"></a>00050 function_requires&lt; Indexed1DIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00051"></a>00051 }
<a name="l00052"></a>00052 };
<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00055"></a><a class="code" href="a00173.html">00055</a> <span class="keyword">struct </span><a class="code" href="a00173.html">IndexedRandomAccess1DIteratorConcept</a> {
<a name="l00056"></a><a class="code" href="a00173.html#ab8bdf7139246166a374cdd6997076bdf">00056</a> <span class="keyword">typedef</span> I <a class="code" href="a00173.html#ab8bdf7139246166a374cdd6997076bdf">iterator_type</a>;
<a name="l00057"></a>00057
<a name="l00058"></a><a class="code" href="a00173.html#a3490e79a9a1b8a3d25cd72b79b01b540">00058</a> <span class="keywordtype">void</span> <a class="code" href="a00173.html#a3490e79a9a1b8a3d25cd72b79b01b540">constraints</a> () {
<a name="l00059"></a>00059 function_requires&lt; RandomAccessIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00060"></a>00060 function_requires&lt; Indexed1DIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00061"></a>00061 }
<a name="l00062"></a>00062 };
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00065"></a><a class="code" href="a00341.html">00065</a> <span class="keyword">struct </span><a class="code" href="a00341.html">Mutable_IndexedRandomAccess1DIteratorConcept</a> {
<a name="l00066"></a><a class="code" href="a00341.html#a502a1f46b30fd9eb8f3f3edd97f5d8e9">00066</a> <span class="keyword">typedef</span> I <a class="code" href="a00341.html#a502a1f46b30fd9eb8f3f3edd97f5d8e9">iterator_type</a>;
<a name="l00067"></a>00067
<a name="l00068"></a><a class="code" href="a00341.html#a3b461615315ace6110f52e4bee899d85">00068</a> <span class="keywordtype">void</span> <a class="code" href="a00341.html#a3b461615315ace6110f52e4bee899d85">constraints</a> () {
<a name="l00069"></a>00069 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00070"></a>00070 function_requires&lt; Indexed1DIteratorConcept&lt;iterator_type&gt; &gt;();
<a name="l00071"></a>00071 }
<a name="l00072"></a>00072 };
<a name="l00073"></a>00073
<a name="l00074"></a>00074 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I&gt;
<a name="l00075"></a><a class="code" href="a00164.html">00075</a> <span class="keyword">struct </span><a class="code" href="a00164.html">Indexed2DIteratorConcept</a> {
<a name="l00076"></a><a class="code" href="a00164.html#a1e6329ee28a1d19f5731feada0f6ad1a">00076</a> <span class="keyword">typedef</span> I <a class="code" href="a00164.html#a1e6329ee28a1d19f5731feada0f6ad1a">iterator_type</a>;
<a name="l00077"></a><a class="code" href="a00164.html#a2c995af9b24b787b9c7af0e1715ee961">00077</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> I::dual_iterator_type <a class="code" href="a00164.html#a2c995af9b24b787b9c7af0e1715ee961">dual_iterator_type</a>;
<a name="l00078"></a><a class="code" href="a00164.html#a3ae4e8930412378be806529f0acd8ae1">00078</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> I::dual_reverse_iterator_type <a class="code" href="a00164.html#a3ae4e8930412378be806529f0acd8ae1">dual_reverse_iterator_type</a>;
<a name="l00079"></a>00079
<a name="l00080"></a><a class="code" href="a00164.html#a68a1b8505f3d36d0d67d5ec227f0c7c1">00080</a> <span class="keywordtype">void</span> <a class="code" href="a00164.html#a68a1b8505f3d36d0d67d5ec227f0c7c1">constraints</a> () {
<a name="l00081"></a>00081 <a class="code" href="a00164.html#a1e6329ee28a1d19f5731feada0f6ad1a">iterator_type</a> it = <a class="code" href="a00164.html#a1e6329ee28a1d19f5731feada0f6ad1a">iterator_type</a> ();
<a name="l00082"></a>00082 <span class="comment">// Indices</span>
<a name="l00083"></a>00083 it.index1 ();
<a name="l00084"></a>00084 it.index2 ();
<a name="l00085"></a>00085 <span class="comment">// Iterator begin/end</span>
<a name="l00086"></a>00086 <a class="code" href="a00164.html#a2c995af9b24b787b9c7af0e1715ee961">dual_iterator_type</a> it_begin (it.begin ());
<a name="l00087"></a>00087 <a class="code" href="a00164.html#a2c995af9b24b787b9c7af0e1715ee961">dual_iterator_type</a> it_end (it.end ());
<a name="l00088"></a>00088 <span class="comment">// Reverse iterator begin/end</span>
<a name="l00089"></a>00089 <a class="code" href="a00164.html#a3ae4e8930412378be806529f0acd8ae1">dual_reverse_iterator_type</a> it_rbegin (it.rbegin ());
<a name="l00090"></a>00090 <a class="code" href="a00164.html#a3ae4e8930412378be806529f0acd8ae1">dual_reverse_iterator_type</a> it_rend (it.rend ());
<a name="l00091"></a>00091 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_begin);
<a name="l00092"></a>00092 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_end);
<a name="l00093"></a>00093 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_rbegin);
<a name="l00094"></a>00094 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_rend);
<a name="l00095"></a>00095 }
<a name="l00096"></a>00096 };
<a name="l00097"></a>00097
<a name="l00098"></a>00098 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I1, <span class="keyword">class</span> I2&gt;
<a name="l00099"></a><a class="code" href="a00172.html">00099</a> <span class="keyword">struct </span><a class="code" href="a00172.html">IndexedBidirectional2DIteratorConcept</a> {
<a name="l00100"></a><a class="code" href="a00172.html#a61a558fea93be86bf8fccdfa1d62b475">00100</a> <span class="keyword">typedef</span> I1 <a class="code" href="a00172.html#a61a558fea93be86bf8fccdfa1d62b475">subiterator1_type</a>;
<a name="l00101"></a><a class="code" href="a00172.html#ae49e9e971d80e32f96bdd55a74dcb3c2">00101</a> <span class="keyword">typedef</span> I2 <a class="code" href="a00172.html#ae49e9e971d80e32f96bdd55a74dcb3c2">subiterator2_type</a>;
<a name="l00102"></a>00102
<a name="l00103"></a><a class="code" href="a00172.html#a3969bfb1b6d13c0916fe0edd9da04d6a">00103</a> <span class="keywordtype">void</span> <a class="code" href="a00172.html#a3969bfb1b6d13c0916fe0edd9da04d6a">constraints</a> () {
<a name="l00104"></a>00104 function_requires&lt; BidirectionalIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00105"></a>00105 function_requires&lt; BidirectionalIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00106"></a>00106 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00107"></a>00107 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00108"></a>00108 }
<a name="l00109"></a>00109 };
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I1, <span class="keyword">class</span> I2&gt;
<a name="l00112"></a><a class="code" href="a00340.html">00112</a> <span class="keyword">struct </span><a class="code" href="a00340.html">Mutable_IndexedBidirectional2DIteratorConcept</a> {
<a name="l00113"></a><a class="code" href="a00340.html#ab31b8c1b411573b5c078316d5899f048">00113</a> <span class="keyword">typedef</span> I1 <a class="code" href="a00340.html#ab31b8c1b411573b5c078316d5899f048">subiterator1_type</a>;
<a name="l00114"></a><a class="code" href="a00340.html#af57c0df08fb277a4de32a9e15fc2f3a4">00114</a> <span class="keyword">typedef</span> I2 <a class="code" href="a00340.html#af57c0df08fb277a4de32a9e15fc2f3a4">subiterator2_type</a>;
<a name="l00115"></a>00115
<a name="l00116"></a><a class="code" href="a00340.html#a35d4c6a2fe326481a1d5d44963cbc2c8">00116</a> <span class="keywordtype">void</span> <a class="code" href="a00340.html#a35d4c6a2fe326481a1d5d44963cbc2c8">constraints</a> () {
<a name="l00117"></a>00117 function_requires&lt; Mutable_BidirectionalIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00118"></a>00118 function_requires&lt; Mutable_BidirectionalIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00119"></a>00119 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00120"></a>00120 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00121"></a>00121 }
<a name="l00122"></a>00122 };
<a name="l00123"></a>00123
<a name="l00124"></a>00124 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I1, <span class="keyword">class</span> I2&gt;
<a name="l00125"></a><a class="code" href="a00174.html">00125</a> <span class="keyword">struct </span><a class="code" href="a00174.html">IndexedRandomAccess2DIteratorConcept</a> {
<a name="l00126"></a><a class="code" href="a00174.html#afcb598a8642f4f1491102eac6fd85ee7">00126</a> <span class="keyword">typedef</span> I1 <a class="code" href="a00174.html#afcb598a8642f4f1491102eac6fd85ee7">subiterator1_type</a>;
<a name="l00127"></a><a class="code" href="a00174.html#a7ee23d04fccc90badbe397428d6a7049">00127</a> <span class="keyword">typedef</span> I2 <a class="code" href="a00174.html#a7ee23d04fccc90badbe397428d6a7049">subiterator2_type</a>;
<a name="l00128"></a>00128
<a name="l00129"></a><a class="code" href="a00174.html#ad90f1a6d2aca24286544542cbcf8f7bb">00129</a> <span class="keywordtype">void</span> <a class="code" href="a00174.html#ad90f1a6d2aca24286544542cbcf8f7bb">constraints</a> () {
<a name="l00130"></a>00130 function_requires&lt; RandomAccessIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00131"></a>00131 function_requires&lt; RandomAccessIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00132"></a>00132 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00133"></a>00133 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00134"></a>00134 }
<a name="l00135"></a>00135 };
<a name="l00136"></a>00136
<a name="l00137"></a>00137 <span class="keyword">template</span>&lt;<span class="keyword">class</span> I1, <span class="keyword">class</span> I2&gt;
<a name="l00138"></a><a class="code" href="a00342.html">00138</a> <span class="keyword">struct </span><a class="code" href="a00342.html">Mutable_IndexedRandomAccess2DIteratorConcept</a> {
<a name="l00139"></a><a class="code" href="a00342.html#afbc4917a4349fb63a4ae4d06b92b7cd0">00139</a> <span class="keyword">typedef</span> I1 <a class="code" href="a00342.html#afbc4917a4349fb63a4ae4d06b92b7cd0">subiterator1_type</a>;
<a name="l00140"></a><a class="code" href="a00342.html#ae60aff5e797cc55bf242e2cef563439b">00140</a> <span class="keyword">typedef</span> I2 <a class="code" href="a00342.html#ae60aff5e797cc55bf242e2cef563439b">subiterator2_type</a>;
<a name="l00141"></a>00141
<a name="l00142"></a><a class="code" href="a00342.html#a89307dcbd2c4243e67ba29dbe7c05688">00142</a> <span class="keywordtype">void</span> <a class="code" href="a00342.html#a89307dcbd2c4243e67ba29dbe7c05688">constraints</a> () {
<a name="l00143"></a>00143 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00144"></a>00144 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00145"></a>00145 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator1_type&gt; &gt;();
<a name="l00146"></a>00146 function_requires&lt; Indexed2DIteratorConcept&lt;subiterator2_type&gt; &gt;();
<a name="l00147"></a>00147 }
<a name="l00148"></a>00148 };
<a name="l00149"></a>00149
<a name="l00150"></a>00150 <span class="keyword">template</span>&lt;<span class="keyword">class</span> C&gt;
<a name="l00151"></a><a class="code" href="a00431.html">00151</a> <span class="keyword">struct </span><a class="code" href="a00431.html">StorageArrayConcept</a> {
<a name="l00152"></a><a class="code" href="a00431.html#a2b33b62e8f6323d1d1379b8f40f56b15">00152</a> <span class="keyword">typedef</span> C <a class="code" href="a00431.html#a2b33b62e8f6323d1d1379b8f40f56b15">container_type</a>;
<a name="l00153"></a><a class="code" href="a00431.html#ada3b0236d9706971afea0dafef792c73">00153</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::size_type <a class="code" href="a00431.html#ada3b0236d9706971afea0dafef792c73">size_type</a>;
<a name="l00154"></a><a class="code" href="a00431.html#a475311adb99487a15747d03a3705c609">00154</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::value_type <a class="code" href="a00431.html#a475311adb99487a15747d03a3705c609">value_type</a>;
<a name="l00155"></a>00155
<a name="l00156"></a><a class="code" href="a00431.html#a730ce078d1a60ba5d6786f88cd6c41db">00156</a> <span class="keywordtype">void</span> <a class="code" href="a00431.html#a730ce078d1a60ba5d6786f88cd6c41db">constraints</a> () {
<a name="l00157"></a>00157 function_requires&lt; RandomAccessContainerConcept&lt;container_type&gt; &gt;();
<a name="l00158"></a>00158 <a class="code" href="a00431.html#ada3b0236d9706971afea0dafef792c73">size_type</a> n (0);
<a name="l00159"></a>00159 <span class="comment">// Sizing constructor</span>
<a name="l00160"></a>00160 <a class="code" href="a00431.html#a2b33b62e8f6323d1d1379b8f40f56b15">container_type</a> c = <a class="code" href="a00431.html#a2b33b62e8f6323d1d1379b8f40f56b15">container_type</a> (n);
<a name="l00161"></a>00161 <span class="comment">// Initialised sizing constructor</span>
<a name="l00162"></a>00162 <a class="code" href="a00431.html#a2b33b62e8f6323d1d1379b8f40f56b15">container_type</a> (n, <a class="code" href="a00431.html#a475311adb99487a15747d03a3705c609">value_type</a> (5));
<a name="l00163"></a>00163 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (c);
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165 };
<a name="l00166"></a>00166
<a name="l00167"></a>00167 <span class="keyword">template</span>&lt;<span class="keyword">class</span> C&gt;
<a name="l00168"></a><a class="code" href="a00349.html">00168</a> <span class="keyword">struct </span><a class="code" href="a00349.html">Mutable_StorageArrayConcept</a> {
<a name="l00169"></a><a class="code" href="a00349.html#a250721eae98b2627a62e567d2e2fe7f5">00169</a> <span class="keyword">typedef</span> C <a class="code" href="a00349.html#a250721eae98b2627a62e567d2e2fe7f5">container_type</a>;
<a name="l00170"></a><a class="code" href="a00349.html#a458fe6fb0c3acf29f658edbe22037092">00170</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::size_type <a class="code" href="a00349.html#a458fe6fb0c3acf29f658edbe22037092">size_type</a>;
<a name="l00171"></a><a class="code" href="a00349.html#abf6dbb745dbac6aa9eba4b9c1bce6071">00171</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::value_type <a class="code" href="a00349.html#abf6dbb745dbac6aa9eba4b9c1bce6071">value_type</a>;
<a name="l00172"></a><a class="code" href="a00349.html#a7cd2a1f989713cc35639c4944827baf3">00172</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::iterator <a class="code" href="a00349.html#a7cd2a1f989713cc35639c4944827baf3">iterator_type</a>;
<a name="l00173"></a>00173
<a name="l00174"></a><a class="code" href="a00349.html#a0827883cdc462e9078f7cd99c4c4e83a">00174</a> <span class="keywordtype">void</span> <a class="code" href="a00349.html#a0827883cdc462e9078f7cd99c4c4e83a">constraints</a> () {
<a name="l00175"></a>00175 function_requires&lt; Mutable_RandomAccessContainerConcept&lt;container_type&gt; &gt; ();
<a name="l00176"></a>00176 <a class="code" href="a00349.html#a458fe6fb0c3acf29f658edbe22037092">size_type</a> n (0);
<a name="l00177"></a>00177 <span class="comment">// Sizing constructor</span>
<a name="l00178"></a>00178 <a class="code" href="a00349.html#a250721eae98b2627a62e567d2e2fe7f5">container_type</a> c = <a class="code" href="a00349.html#a250721eae98b2627a62e567d2e2fe7f5">container_type</a> (n);
<a name="l00179"></a>00179 <span class="comment">// Initialised sizing constructor</span>
<a name="l00180"></a>00180 c = <a class="code" href="a00349.html#a250721eae98b2627a62e567d2e2fe7f5">container_type</a> (n, <a class="code" href="a00349.html#abf6dbb745dbac6aa9eba4b9c1bce6071">value_type</a> (3));
<a name="l00181"></a>00181 <span class="comment">// Resize</span>
<a name="l00182"></a>00182 c.resize (n, <a class="code" href="a00349.html#abf6dbb745dbac6aa9eba4b9c1bce6071">value_type</a> (5));
<a name="l00183"></a>00183 <span class="comment">// Resize - none preserving</span>
<a name="l00184"></a>00184 c.resize (n);
<a name="l00185"></a>00185 }
<a name="l00186"></a>00186 };
<a name="l00187"></a>00187
<a name="l00188"></a>00188 <span class="keyword">template</span>&lt;<span class="keyword">class</span> C&gt;
<a name="l00189"></a><a class="code" href="a00432.html">00189</a> <span class="keyword">struct </span><a class="code" href="a00432.html">StorageSparseConcept</a> {
<a name="l00190"></a><a class="code" href="a00432.html#a01f3509b9ed015fa1a44a026b58c22e3">00190</a> <span class="keyword">typedef</span> C <a class="code" href="a00432.html#a01f3509b9ed015fa1a44a026b58c22e3">container_type</a>;
<a name="l00191"></a><a class="code" href="a00432.html#a40773edffe25371abfd91fbcf356ab45">00191</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::size_type <a class="code" href="a00432.html#a40773edffe25371abfd91fbcf356ab45">size_type</a>;
<a name="l00192"></a>00192
<a name="l00193"></a><a class="code" href="a00432.html#a7a2bcb35597b15a4507f0e88df025d33">00193</a> <span class="keywordtype">void</span> <a class="code" href="a00432.html#a7a2bcb35597b15a4507f0e88df025d33">constraints</a> () {
<a name="l00194"></a>00194 function_requires&lt; ReversibleContainerConcept&lt;container_type&gt; &gt; ();
<a name="l00195"></a>00195 }
<a name="l00196"></a>00196 };
<a name="l00197"></a>00197
<a name="l00198"></a>00198 <span class="keyword">template</span>&lt;<span class="keyword">class</span> C&gt;
<a name="l00199"></a><a class="code" href="a00350.html">00199</a> <span class="keyword">struct </span><a class="code" href="a00350.html">Mutable_StorageSparseConcept</a> {
<a name="l00200"></a><a class="code" href="a00350.html#acf9f2c608b295cf2ebf6894dd8f58bb8">00200</a> <span class="keyword">typedef</span> C <a class="code" href="a00350.html#acf9f2c608b295cf2ebf6894dd8f58bb8">container_type</a>;
<a name="l00201"></a><a class="code" href="a00350.html#a3078c279a04cfea13d1fbfbf45bd08ca">00201</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::size_type <a class="code" href="a00350.html#a3078c279a04cfea13d1fbfbf45bd08ca">size_type</a>;
<a name="l00202"></a><a class="code" href="a00350.html#a10470084f846fbf579dad3179038d965">00202</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::value_type <a class="code" href="a00350.html#a10470084f846fbf579dad3179038d965">value_type</a>;
<a name="l00203"></a><a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">00203</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> C::iterator <a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">iterator_type</a>;
<a name="l00204"></a>00204
<a name="l00205"></a><a class="code" href="a00350.html#af9ab79f85853669b4e2ef701cf66d5fe">00205</a> <span class="keywordtype">void</span> <a class="code" href="a00350.html#af9ab79f85853669b4e2ef701cf66d5fe">constraints</a> () {
<a name="l00206"></a>00206 <span class="comment">// NOTE - Not Mutable_ReversibleContainerConcept</span>
<a name="l00207"></a>00207 function_requires&lt; ReversibleContainerConcept&lt;container_type&gt; &gt;();
<a name="l00208"></a>00208 <a class="code" href="a00350.html#acf9f2c608b295cf2ebf6894dd8f58bb8">container_type</a> c = <a class="code" href="a00350.html#acf9f2c608b295cf2ebf6894dd8f58bb8">container_type</a> ();
<a name="l00209"></a>00209 <a class="code" href="a00350.html#a10470084f846fbf579dad3179038d965">value_type</a> t = <a class="code" href="a00350.html#a10470084f846fbf579dad3179038d965">value_type</a> ();
<a name="l00210"></a>00210 <a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">iterator_type</a> it = <a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">iterator_type</a> (), it1 = <a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">iterator_type</a> (), it2 = <a class="code" href="a00350.html#a2eebe6c05be6a1b79ee4f7af4fd6f24e">iterator_type</a> ();
<a name="l00211"></a>00211 <span class="comment">// Insert</span>
<a name="l00212"></a>00212 c.insert (it, t);
<a name="l00213"></a>00213 <span class="comment">// Erase</span>
<a name="l00214"></a>00214 c.erase (it);
<a name="l00215"></a>00215 <span class="comment">// Range erase</span>
<a name="l00216"></a>00216 c.erase (it1, it2);
<a name="l00217"></a>00217 <span class="comment">// Clear</span>
<a name="l00218"></a>00218 c.clear ();
<a name="l00219"></a>00219 }
<a name="l00220"></a>00220 };
<a name="l00221"></a>00221
<a name="l00222"></a>00222 <span class="keyword">template</span>&lt;<span class="keyword">class</span> G&gt;
<a name="l00223"></a><a class="code" href="a00175.html">00223</a> <span class="keyword">struct </span><a class="code" href="a00175.html">IndexSetConcept</a> {
<a name="l00224"></a><a class="code" href="a00175.html#a1d81f29cbf00205636390a121ee0d14c">00224</a> <span class="keyword">typedef</span> G <a class="code" href="a00175.html#a1d81f29cbf00205636390a121ee0d14c">generator_type</a>;
<a name="l00225"></a><a class="code" href="a00175.html#a08dac539692b614a01b5865e85ca6247">00225</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> G::size_type <a class="code" href="a00175.html#a08dac539692b614a01b5865e85ca6247">size_type</a>;
<a name="l00226"></a><a class="code" href="a00175.html#a83869f3afa5bf7bd3ac6a46e1909d097">00226</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> G::value_type <a class="code" href="a00175.html#a83869f3afa5bf7bd3ac6a46e1909d097">value_type</a>;
<a name="l00227"></a>00227
<a name="l00228"></a><a class="code" href="a00175.html#afa799d9fde2ac88a2047e75629e5edef">00228</a> <span class="keywordtype">void</span> <a class="code" href="a00175.html#afa799d9fde2ac88a2047e75629e5edef">constraints</a> () {
<a name="l00229"></a>00229 function_requires&lt; AssignableConcept&lt;generator_type&gt; &gt;();
<a name="l00230"></a>00230 function_requires&lt; ReversibleContainerConcept&lt;generator_type&gt; &gt;();
<a name="l00231"></a>00231 <a class="code" href="a00175.html#a1d81f29cbf00205636390a121ee0d14c">generator_type</a> g = <a class="code" href="a00175.html#a1d81f29cbf00205636390a121ee0d14c">generator_type</a> ();
<a name="l00232"></a>00232 <a class="code" href="a00175.html#a08dac539692b614a01b5865e85ca6247">size_type</a> n (0);
<a name="l00233"></a>00233 <a class="code" href="a00175.html#a83869f3afa5bf7bd3ac6a46e1909d097">value_type</a> t;
<a name="l00234"></a>00234 <span class="comment">// Element access</span>
<a name="l00235"></a>00235 t = g (n);
<a name="l00236"></a>00236 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (t);
<a name="l00237"></a>00237 }
<a name="l00238"></a>00238 };
<a name="l00239"></a>00239
<a name="l00249"></a>00249 <span class="keyword">template</span>&lt;<span class="keyword">class</span> SE&gt;
<a name="l00250"></a><a class="code" href="a00406.html">00250</a> <span class="keyword">struct </span><a class="code" href="a00406.html" title="Scalar expression concept.">ScalarExpressionConcept</a> {
<a name="l00251"></a><a class="code" href="a00406.html#a802f8fe8e579751f11054791db31a749">00251</a> <span class="keyword">typedef</span> SE <a class="code" href="a00406.html#a802f8fe8e579751f11054791db31a749">scalar_expression_type</a>;
<a name="l00252"></a><a class="code" href="a00406.html#a6f7f7cc95584845d872f26f375d0532a">00252</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> SE::value_type <a class="code" href="a00406.html#a6f7f7cc95584845d872f26f375d0532a">value_type</a>;
<a name="l00253"></a>00253
<a name="l00254"></a><a class="code" href="a00406.html#a003ad196a0d8b26edc2dce3f55dd92a0">00254</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00406.html#a003ad196a0d8b26edc2dce3f55dd92a0">complexity</a> = <a class="code" href="a00406.html#a003ad196a0d8b26edc2dce3f55dd92a0">SE::complexity</a>;
<a name="l00255"></a>00255
<a name="l00256"></a><a class="code" href="a00406.html#a87b5e2a126981c17b64f6f236de53da3">00256</a> <span class="keywordtype">void</span> <a class="code" href="a00406.html#a87b5e2a126981c17b64f6f236de53da3">constraints</a> () {
<a name="l00257"></a>00257 <a class="code" href="a00406.html#a802f8fe8e579751f11054791db31a749">scalar_expression_type</a> *sp;
<a name="l00258"></a>00258 <a class="code" href="a00406.html#a802f8fe8e579751f11054791db31a749">scalar_expression_type</a> s = *sp;
<a name="l00259"></a>00259 <a class="code" href="a00406.html#a6f7f7cc95584845d872f26f375d0532a">value_type</a> t;
<a name="l00260"></a>00260 <span class="comment">// Conversion</span>
<a name="l00261"></a>00261 t = s;
<a name="l00262"></a>00262 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (t);
<a name="l00263"></a>00263 }
<a name="l00264"></a>00264 };
<a name="l00265"></a>00265
<a name="l00280"></a>00280 <span class="keyword">template</span>&lt;<span class="keyword">class</span> VE&gt;
<a name="l00281"></a><a class="code" href="a00586.html">00281</a> <span class="keyword">struct </span><a class="code" href="a00586.html" title="Vector expression concept.">VectorExpressionConcept</a> {
<a name="l00282"></a><a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">00282</a> <span class="keyword">typedef</span> VE <a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">vector_expression_type</a>;
<a name="l00283"></a><a class="code" href="a00586.html#a6deffa771bf83a99e3ee6df5f79b3920">00283</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::type_category <a class="code" href="a00586.html#a6deffa771bf83a99e3ee6df5f79b3920">type_category</a>;
<a name="l00284"></a><a class="code" href="a00586.html#a90bfa626bc0d71f03ffe7f83ac2171aa">00284</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::size_type <a class="code" href="a00586.html#a90bfa626bc0d71f03ffe7f83ac2171aa">size_type</a>;
<a name="l00285"></a><a class="code" href="a00586.html#ae715ddb377a319d59c1838287cd2bca4">00285</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::difference_type <a class="code" href="a00586.html#ae715ddb377a319d59c1838287cd2bca4">difference_type</a>;
<a name="l00286"></a><a class="code" href="a00586.html#a86895eab13623cfd685f1efc55e73267">00286</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::value_type <a class="code" href="a00586.html#a86895eab13623cfd685f1efc55e73267">value_type</a>;
<a name="l00287"></a><a class="code" href="a00586.html#a00e3d7d18f40cbf4930c1760de85db72">00287</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::const_reference <a class="code" href="a00586.html#a00e3d7d18f40cbf4930c1760de85db72">const_reference</a>;
<a name="l00288"></a><a class="code" href="a00586.html#aa77bbb0ea810901cafbda66a9f92c96b">00288</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::const_iterator <a class="code" href="a00586.html#aa77bbb0ea810901cafbda66a9f92c96b">const_iterator_type</a>;
<a name="l00289"></a><a class="code" href="a00586.html#a0662e576ad7177c1a780dec94c503865">00289</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::const_reverse_iterator <a class="code" href="a00586.html#a0662e576ad7177c1a780dec94c503865">const_reverse_iterator_type</a>;
<a name="l00290"></a>00290
<a name="l00291"></a><a class="code" href="a00586.html#a16cefaf0600dce5bf204008cd21f60df">00291</a> <span class="keywordtype">void</span> <a class="code" href="a00586.html#a16cefaf0600dce5bf204008cd21f60df">constraints</a> () {
<a name="l00292"></a>00292 <a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">vector_expression_type</a> *vp;
<a name="l00293"></a>00293 <span class="keyword">const</span> <a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">vector_expression_type</a> *cvp;
<a name="l00294"></a>00294 <a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">vector_expression_type</a> v = *vp;
<a name="l00295"></a>00295 <span class="keyword">const</span> <a class="code" href="a00586.html#abf29cd15851a6b005fc30101f0679cda">vector_expression_type</a> cv = *cvp;
<a name="l00296"></a>00296 <a class="code" href="a00586.html#a90bfa626bc0d71f03ffe7f83ac2171aa">size_type</a> n (0), i (0);
<a name="l00297"></a>00297 <a class="code" href="a00586.html#a86895eab13623cfd685f1efc55e73267">value_type</a> t;
<a name="l00298"></a>00298 <span class="comment">// Find (internal?)</span>
<a name="l00299"></a>00299 <a class="code" href="a00586.html#aa77bbb0ea810901cafbda66a9f92c96b">const_iterator_type</a> cit (v.find (i));
<a name="l00300"></a>00300 <span class="comment">// Beginning of range</span>
<a name="l00301"></a>00301 <a class="code" href="a00586.html#aa77bbb0ea810901cafbda66a9f92c96b">const_iterator_type</a> cit_begin (v.begin ());
<a name="l00302"></a>00302 <span class="comment">// End of range</span>
<a name="l00303"></a>00303 <a class="code" href="a00586.html#aa77bbb0ea810901cafbda66a9f92c96b">const_iterator_type</a> cit_end (v.end ());
<a name="l00304"></a>00304 <span class="comment">// Size</span>
<a name="l00305"></a>00305 n = v.size ();
<a name="l00306"></a>00306 <span class="comment">// Beginning of reverse range</span>
<a name="l00307"></a>00307 <a class="code" href="a00586.html#a0662e576ad7177c1a780dec94c503865">const_reverse_iterator_type</a> crit_begin (cv.rbegin ());
<a name="l00308"></a>00308 <span class="comment">// End of reverse range</span>
<a name="l00309"></a>00309 <a class="code" href="a00586.html#a0662e576ad7177c1a780dec94c503865">const_reverse_iterator_type</a> crit_end (cv.rend ());
<a name="l00310"></a>00310 <span class="comment">// Element access</span>
<a name="l00311"></a>00311 t = v (i);
<a name="l00312"></a>00312 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (n);
<a name="l00313"></a>00313 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit);
<a name="l00314"></a>00314 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit_begin);
<a name="l00315"></a>00315 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit_end);
<a name="l00316"></a>00316 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit_begin);
<a name="l00317"></a>00317 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit_end);
<a name="l00318"></a>00318 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (t);
<a name="l00319"></a>00319 }
<a name="l00320"></a>00320 };
<a name="l00321"></a>00321
<a name="l00322"></a>00322 <span class="keyword">template</span>&lt;<span class="keyword">class</span> VE&gt;
<a name="l00323"></a><a class="code" href="a00354.html">00323</a> <span class="keyword">struct </span><a class="code" href="a00354.html">Mutable_VectorExpressionConcept</a> {
<a name="l00324"></a><a class="code" href="a00354.html#ac7d06ae45d21ff8c906d07ec2fa0e6f3">00324</a> <span class="keyword">typedef</span> VE <a class="code" href="a00354.html#ac7d06ae45d21ff8c906d07ec2fa0e6f3">vector_expression_type</a>;
<a name="l00325"></a><a class="code" href="a00354.html#aea3d8728a1f4f2dd8ad1820235c4436c">00325</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::size_type <a class="code" href="a00354.html#aea3d8728a1f4f2dd8ad1820235c4436c">size_type</a>;
<a name="l00326"></a><a class="code" href="a00354.html#a222aa1e5cbdeef4cdc48586e73064fc6">00326</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::value_type <a class="code" href="a00354.html#a222aa1e5cbdeef4cdc48586e73064fc6">value_type</a>;
<a name="l00327"></a><a class="code" href="a00354.html#a9926b0c6407a81714db0d0d0e798b046">00327</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::iterator <a class="code" href="a00354.html#a9926b0c6407a81714db0d0d0e798b046">iterator_type</a>;
<a name="l00328"></a><a class="code" href="a00354.html#a6ce0a916f3079213dcd3509443011b37">00328</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VE::reverse_iterator <a class="code" href="a00354.html#a6ce0a916f3079213dcd3509443011b37">reverse_iterator_type</a>;
<a name="l00329"></a>00329
<a name="l00330"></a><a class="code" href="a00354.html#a148fc5ae2cedda65cda0313ff6f0ffea">00330</a> <span class="keywordtype">void</span> <a class="code" href="a00354.html#a148fc5ae2cedda65cda0313ff6f0ffea">constraints</a> () {
<a name="l00331"></a>00331 function_requires&lt; AssignableConcept&lt;vector_expression_type&gt; &gt;();
<a name="l00332"></a>00332 function_requires&lt; VectorExpressionConcept&lt;vector_expression_type&gt; &gt;();
<a name="l00333"></a>00333 <a class="code" href="a00354.html#ac7d06ae45d21ff8c906d07ec2fa0e6f3">vector_expression_type</a> *vp;
<a name="l00334"></a>00334 <a class="code" href="a00354.html#ac7d06ae45d21ff8c906d07ec2fa0e6f3">vector_expression_type</a> v = *vp, v1 = *vp, v2 = *vp;
<a name="l00335"></a>00335 <a class="code" href="a00354.html#aea3d8728a1f4f2dd8ad1820235c4436c">size_type</a> i (0);
<a name="l00336"></a>00336 <a class="code" href="a00354.html#a222aa1e5cbdeef4cdc48586e73064fc6">value_type</a> t = <a class="code" href="a00354.html#a222aa1e5cbdeef4cdc48586e73064fc6">value_type</a> ();
<a name="l00337"></a>00337 <span class="comment">// Find (internal?)</span>
<a name="l00338"></a>00338 <a class="code" href="a00354.html#a9926b0c6407a81714db0d0d0e798b046">iterator_type</a> it (v.find (i));
<a name="l00339"></a>00339 <span class="comment">// Beginning of range</span>
<a name="l00340"></a>00340 <a class="code" href="a00354.html#a9926b0c6407a81714db0d0d0e798b046">iterator_type</a> it_begin (v.begin ());
<a name="l00341"></a>00341 <span class="comment">// End of range</span>
<a name="l00342"></a>00342 <a class="code" href="a00354.html#a9926b0c6407a81714db0d0d0e798b046">iterator_type</a> it_end (v.end ());
<a name="l00343"></a>00343 <span class="comment">// Swap</span>
<a name="l00344"></a>00344 v1.swap (v2);
<a name="l00345"></a>00345 <span class="comment">// Beginning of reverse range</span>
<a name="l00346"></a>00346 <a class="code" href="a00354.html#a6ce0a916f3079213dcd3509443011b37">reverse_iterator_type</a> rit_begin (v.rbegin ());
<a name="l00347"></a>00347 <span class="comment">// End of reverse range</span>
<a name="l00348"></a>00348 <a class="code" href="a00354.html#a6ce0a916f3079213dcd3509443011b37">reverse_iterator_type</a> rit_end (v.rend ());
<a name="l00349"></a>00349 <span class="comment">// Assignments</span>
<a name="l00350"></a>00350 v2 = v1;
<a name="l00351"></a>00351 v2.assign (v1);
<a name="l00352"></a>00352 v2 += v1;
<a name="l00353"></a>00353 v2.plus_assign (v1);
<a name="l00354"></a>00354 v2 -= v1;
<a name="l00355"></a>00355 v2.minus_assign (v1);
<a name="l00356"></a>00356 v *= t;
<a name="l00357"></a>00357 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it);
<a name="l00358"></a>00358 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_begin);
<a name="l00359"></a>00359 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it_end);
<a name="l00360"></a>00360 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit_begin);
<a name="l00361"></a>00361 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit_end);
<a name="l00362"></a>00362 }
<a name="l00363"></a>00363 };
<a name="l00364"></a>00364
<a name="l00365"></a>00365 <span class="keyword">template</span>&lt;<span class="keyword">class</span> ME&gt;
<a name="l00366"></a><a class="code" href="a00337.html">00366</a> <span class="keyword">struct </span><a class="code" href="a00337.html">MatrixExpressionConcept</a> {
<a name="l00367"></a><a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">00367</a> <span class="keyword">typedef</span> ME <a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">matrix_expression_type</a>;
<a name="l00368"></a><a class="code" href="a00337.html#aad8819453943935038e8d1f0541bd8d4">00368</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::type_category <a class="code" href="a00337.html#aad8819453943935038e8d1f0541bd8d4">type_category</a>;
<a name="l00369"></a><a class="code" href="a00337.html#a792ef8c5f79df4d9ab7fea7a84250382">00369</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::size_type <a class="code" href="a00337.html#a792ef8c5f79df4d9ab7fea7a84250382">size_type</a>;
<a name="l00370"></a><a class="code" href="a00337.html#add16672efff5f861ce96afe6b3a7cd38">00370</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::value_type <a class="code" href="a00337.html#add16672efff5f861ce96afe6b3a7cd38">value_type</a>;
<a name="l00371"></a><a class="code" href="a00337.html#a54399d69ba2b30233a1ce08e410df50b">00371</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::const_iterator1 <a class="code" href="a00337.html#a54399d69ba2b30233a1ce08e410df50b">const_subiterator1_type</a>;
<a name="l00372"></a><a class="code" href="a00337.html#aa089ddacb759b94922478605ec06053d">00372</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::const_iterator2 <a class="code" href="a00337.html#aa089ddacb759b94922478605ec06053d">const_subiterator2_type</a>;
<a name="l00373"></a><a class="code" href="a00337.html#acd183e9cb499a37f03330b12c05196ce">00373</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::const_reverse_iterator1 <a class="code" href="a00337.html#acd183e9cb499a37f03330b12c05196ce">const_reverse_subiterator1_type</a>;
<a name="l00374"></a><a class="code" href="a00337.html#adc04e26db2e851a29b75ae62351fb64d">00374</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::const_reverse_iterator2 <a class="code" href="a00337.html#adc04e26db2e851a29b75ae62351fb64d">const_reverse_subiterator2_type</a>;
<a name="l00375"></a>00375
<a name="l00376"></a><a class="code" href="a00337.html#a91df46729281be15f74389f81f96a646">00376</a> <span class="keywordtype">void</span> <a class="code" href="a00337.html#a91df46729281be15f74389f81f96a646">constraints</a> () {
<a name="l00377"></a>00377 <a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">matrix_expression_type</a> *mp;
<a name="l00378"></a>00378 <span class="keyword">const</span> <a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">matrix_expression_type</a> *cmp;
<a name="l00379"></a>00379 <a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">matrix_expression_type</a> m = *mp;
<a name="l00380"></a>00380 <span class="keyword">const</span> <a class="code" href="a00337.html#a708c04e887d8ef9c96d96180a6758cf6">matrix_expression_type</a> cm = *cmp;
<a name="l00381"></a>00381 <a class="code" href="a00337.html#a792ef8c5f79df4d9ab7fea7a84250382">size_type</a> n (0), i (0), j (0);
<a name="l00382"></a>00382 <a class="code" href="a00337.html#add16672efff5f861ce96afe6b3a7cd38">value_type</a> t;
<a name="l00383"></a>00383 <span class="comment">// Find (internal?)</span>
<a name="l00384"></a>00384 <a class="code" href="a00337.html#a54399d69ba2b30233a1ce08e410df50b">const_subiterator1_type</a> cit1 (m.find1 (0, i, j));
<a name="l00385"></a>00385 <a class="code" href="a00337.html#aa089ddacb759b94922478605ec06053d">const_subiterator2_type</a> cit2 (m.find2 (0, i, j));
<a name="l00386"></a>00386 <span class="comment">// Beginning of range</span>
<a name="l00387"></a>00387 <a class="code" href="a00337.html#a54399d69ba2b30233a1ce08e410df50b">const_subiterator1_type</a> cit1_begin (m.begin1 ());
<a name="l00388"></a>00388 <a class="code" href="a00337.html#aa089ddacb759b94922478605ec06053d">const_subiterator2_type</a> cit2_begin (m.begin2 ());
<a name="l00389"></a>00389 <span class="comment">// End of range</span>
<a name="l00390"></a>00390 <a class="code" href="a00337.html#a54399d69ba2b30233a1ce08e410df50b">const_subiterator1_type</a> cit1_end (m.end1 ());
<a name="l00391"></a>00391 <a class="code" href="a00337.html#aa089ddacb759b94922478605ec06053d">const_subiterator2_type</a> cit2_end (m.end2 ());
<a name="l00392"></a>00392 <span class="comment">// Size</span>
<a name="l00393"></a>00393 n = m.size1 ();
<a name="l00394"></a>00394 n = m.size2 ();
<a name="l00395"></a>00395 <span class="comment">// Beginning of reverse range</span>
<a name="l00396"></a>00396 <a class="code" href="a00337.html#acd183e9cb499a37f03330b12c05196ce">const_reverse_subiterator1_type</a> crit1_begin (cm.rbegin1 ());
<a name="l00397"></a>00397 <a class="code" href="a00337.html#adc04e26db2e851a29b75ae62351fb64d">const_reverse_subiterator2_type</a> crit2_begin (cm.rbegin2 ());
<a name="l00398"></a>00398 <span class="comment">// End of reverse range</span>
<a name="l00399"></a>00399 <a class="code" href="a00337.html#acd183e9cb499a37f03330b12c05196ce">const_reverse_subiterator1_type</a> crit1_end (cm.rend1 ());
<a name="l00400"></a>00400 <a class="code" href="a00337.html#adc04e26db2e851a29b75ae62351fb64d">const_reverse_subiterator2_type</a> crit2_end (cm.rend2 ());
<a name="l00401"></a>00401 <span class="comment">// Element access</span>
<a name="l00402"></a>00402 t = m (i, j);
<a name="l00403"></a>00403 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (n);
<a name="l00404"></a>00404 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit1);
<a name="l00405"></a>00405 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit2);
<a name="l00406"></a>00406 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit1_begin);
<a name="l00407"></a>00407 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit2_begin);
<a name="l00408"></a>00408 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit1_end);
<a name="l00409"></a>00409 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (cit2_end);
<a name="l00410"></a>00410 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit1_begin);
<a name="l00411"></a>00411 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit2_begin);
<a name="l00412"></a>00412 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit1_end);
<a name="l00413"></a>00413 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (crit2_end);
<a name="l00414"></a>00414 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (t);
<a name="l00415"></a>00415 }
<a name="l00416"></a>00416 };
<a name="l00417"></a>00417
<a name="l00418"></a>00418 <span class="keyword">template</span>&lt;<span class="keyword">class</span> ME&gt;
<a name="l00419"></a><a class="code" href="a00346.html">00419</a> <span class="keyword">struct </span><a class="code" href="a00346.html">Mutable_MatrixExpressionConcept</a> {
<a name="l00420"></a><a class="code" href="a00346.html#a9b1573101976df92398ac710133a4b40">00420</a> <span class="keyword">typedef</span> ME <a class="code" href="a00346.html#a9b1573101976df92398ac710133a4b40">matrix_expression_type</a>;
<a name="l00421"></a><a class="code" href="a00346.html#a8fb55461329f315375c2cf593c1c897d">00421</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::size_type <a class="code" href="a00346.html#a8fb55461329f315375c2cf593c1c897d">size_type</a>;
<a name="l00422"></a><a class="code" href="a00346.html#a99a5d025ca52f3632548138bbd66a82b">00422</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::value_type <a class="code" href="a00346.html#a99a5d025ca52f3632548138bbd66a82b">value_type</a>;
<a name="l00423"></a><a class="code" href="a00346.html#a332ba67e614dac4314d0e6152ec14488">00423</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::iterator1 <a class="code" href="a00346.html#a332ba67e614dac4314d0e6152ec14488">subiterator1_type</a>;
<a name="l00424"></a><a class="code" href="a00346.html#a77e1bb8e856fc81f49570bd5151efc37">00424</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::iterator2 <a class="code" href="a00346.html#a77e1bb8e856fc81f49570bd5151efc37">subiterator2_type</a>;
<a name="l00425"></a><a class="code" href="a00346.html#a1a70b3dca40cb9347a66e216447afee0">00425</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::reverse_iterator1 <a class="code" href="a00346.html#a1a70b3dca40cb9347a66e216447afee0">reverse_subiterator1_type</a>;
<a name="l00426"></a><a class="code" href="a00346.html#ace6d37264e7754c34039163ba0f87bb9">00426</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ME::reverse_iterator2 <a class="code" href="a00346.html#ace6d37264e7754c34039163ba0f87bb9">reverse_subiterator2_type</a>;
<a name="l00427"></a>00427
<a name="l00428"></a><a class="code" href="a00346.html#a1a5fd9e17d360a46756479f0635a0ffd">00428</a> <span class="keywordtype">void</span> <a class="code" href="a00346.html#a1a5fd9e17d360a46756479f0635a0ffd">constraints</a> () {
<a name="l00429"></a>00429 function_requires&lt; AssignableConcept&lt;matrix_expression_type&gt; &gt;();
<a name="l00430"></a>00430 function_requires&lt; MatrixExpressionConcept&lt;matrix_expression_type&gt; &gt;();
<a name="l00431"></a>00431 <a class="code" href="a00346.html#a9b1573101976df92398ac710133a4b40">matrix_expression_type</a> *mp;
<a name="l00432"></a>00432 <a class="code" href="a00346.html#a9b1573101976df92398ac710133a4b40">matrix_expression_type</a> m = *mp, m1 = *mp, m2 = *mp;
<a name="l00433"></a>00433 <a class="code" href="a00346.html#a8fb55461329f315375c2cf593c1c897d">size_type</a> i (0), j (0);
<a name="l00434"></a>00434 <a class="code" href="a00346.html#a99a5d025ca52f3632548138bbd66a82b">value_type</a> t = <a class="code" href="a00346.html#a99a5d025ca52f3632548138bbd66a82b">value_type</a> ();
<a name="l00435"></a>00435 <span class="comment">// Find (internal?)</span>
<a name="l00436"></a>00436 <a class="code" href="a00346.html#a332ba67e614dac4314d0e6152ec14488">subiterator1_type</a> it1 (m.find1 (0, i, j));
<a name="l00437"></a>00437 <a class="code" href="a00346.html#a77e1bb8e856fc81f49570bd5151efc37">subiterator2_type</a> it2 (m.find2 (0, i, j));
<a name="l00438"></a>00438 <span class="comment">// Beginning of range</span>
<a name="l00439"></a>00439 <a class="code" href="a00346.html#a332ba67e614dac4314d0e6152ec14488">subiterator1_type</a> it1_begin (m.begin1 ());
<a name="l00440"></a>00440 <a class="code" href="a00346.html#a77e1bb8e856fc81f49570bd5151efc37">subiterator2_type</a> it2_begin (m.begin2 ());
<a name="l00441"></a>00441 <span class="comment">// End of range</span>
<a name="l00442"></a>00442 <a class="code" href="a00346.html#a332ba67e614dac4314d0e6152ec14488">subiterator1_type</a> it1_end (m.end1 ());
<a name="l00443"></a>00443 <a class="code" href="a00346.html#a77e1bb8e856fc81f49570bd5151efc37">subiterator2_type</a> it2_end (m.end2 ());
<a name="l00444"></a>00444 <span class="comment">// Swap</span>
<a name="l00445"></a>00445 m1.swap (m2);
<a name="l00446"></a>00446 <span class="comment">// Beginning of reverse range</span>
<a name="l00447"></a>00447 <a class="code" href="a00346.html#a1a70b3dca40cb9347a66e216447afee0">reverse_subiterator1_type</a> rit1_begin (m.rbegin1 ());
<a name="l00448"></a>00448 <a class="code" href="a00346.html#ace6d37264e7754c34039163ba0f87bb9">reverse_subiterator2_type</a> rit2_begin (m.rbegin2 ());
<a name="l00449"></a>00449 <span class="comment">// End of reverse range</span>
<a name="l00450"></a>00450 <a class="code" href="a00346.html#a1a70b3dca40cb9347a66e216447afee0">reverse_subiterator1_type</a> rit1_end (m.rend1 ());
<a name="l00451"></a>00451 <a class="code" href="a00346.html#ace6d37264e7754c34039163ba0f87bb9">reverse_subiterator2_type</a> rit2_end (m.rend2 ());
<a name="l00452"></a>00452 <span class="comment">// Assignments</span>
<a name="l00453"></a>00453 m2 = m1;
<a name="l00454"></a>00454 m2.assign (m1);
<a name="l00455"></a>00455 m2 += m1;
<a name="l00456"></a>00456 m2.plus_assign (m1);
<a name="l00457"></a>00457 m2 -= m1;
<a name="l00458"></a>00458 m2.minus_assign (m1);
<a name="l00459"></a>00459 m *= t;
<a name="l00460"></a>00460 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it1);
<a name="l00461"></a>00461 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it2);
<a name="l00462"></a>00462 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it1_begin);
<a name="l00463"></a>00463 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it2_begin);
<a name="l00464"></a>00464 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it1_end);
<a name="l00465"></a>00465 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (it2_end);
<a name="l00466"></a>00466 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit1_begin);
<a name="l00467"></a>00467 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit2_begin);
<a name="l00468"></a>00468 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit1_end);
<a name="l00469"></a>00469 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (rit2_end);
<a name="l00470"></a>00470 }
<a name="l00471"></a>00471 };
<a name="l00472"></a>00472
<a name="l00473"></a>00473 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00474"></a><a class="code" href="a00585.html">00474</a> <span class="keyword">struct </span><a class="code" href="a00585.html">VectorConcept</a> {
<a name="l00475"></a><a class="code" href="a00585.html#ac534bfa717bb3e841d868bf6b17af827">00475</a> <span class="keyword">typedef</span> V <a class="code" href="a00585.html#ac534bfa717bb3e841d868bf6b17af827">vector_type</a>;
<a name="l00476"></a><a class="code" href="a00585.html#a565bec78f579b412ee20d83a8f18204d">00476</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::size_type <a class="code" href="a00585.html#a565bec78f579b412ee20d83a8f18204d">size_type</a>;
<a name="l00477"></a><a class="code" href="a00585.html#a7b076fc95126755735b872b23cbb872d">00477</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::value_type <a class="code" href="a00585.html#a7b076fc95126755735b872b23cbb872d">value_type</a>;
<a name="l00478"></a><a class="code" href="a00585.html#a445e632d5d4643a6f0b047e2d9f846a9">00478</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00585.html#a7b076fc95126755735b872b23cbb872d">value_type</a> *<a class="code" href="a00585.html#a445e632d5d4643a6f0b047e2d9f846a9">const_pointer</a>;
<a name="l00479"></a>00479
<a name="l00480"></a><a class="code" href="a00585.html#a2d89cd5f7bc9aab135d709e087d5f6ed">00480</a> <span class="keywordtype">void</span> <a class="code" href="a00585.html#a2d89cd5f7bc9aab135d709e087d5f6ed">constraints</a> () {
<a name="l00481"></a>00481 function_requires&lt; VectorExpressionConcept&lt;vector_type&gt; &gt;();
<a name="l00482"></a>00482 <a class="code" href="a00585.html#a565bec78f579b412ee20d83a8f18204d">size_type</a> n (0);
<a name="l00483"></a>00483 <a class="code" href="a00585.html#a565bec78f579b412ee20d83a8f18204d">size_type</a> i (0);
<a name="l00484"></a>00484 <span class="comment">// Sizing constructor</span>
<a name="l00485"></a>00485 <a class="code" href="a00585.html#ac534bfa717bb3e841d868bf6b17af827">vector_type</a> v (n);
<a name="l00486"></a>00486 <span class="comment">// Element support</span>
<a name="l00487"></a>00487 <a class="code" href="a00585.html#a445e632d5d4643a6f0b047e2d9f846a9">const_pointer</a> p = v.find_element (i);
<a name="l00488"></a>00488
<a name="l00489"></a>00489 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (p);
<a name="l00490"></a>00490 }
<a name="l00491"></a>00491 };
<a name="l00492"></a>00492
<a name="l00493"></a>00493 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00494"></a><a class="code" href="a00353.html">00494</a> <span class="keyword">struct </span><a class="code" href="a00353.html">Mutable_VectorConcept</a> {
<a name="l00495"></a><a class="code" href="a00353.html#a94157b46c7dcf3010d8294fe32efb6ff">00495</a> <span class="keyword">typedef</span> V <a class="code" href="a00353.html#a94157b46c7dcf3010d8294fe32efb6ff">vector_type</a>;
<a name="l00496"></a><a class="code" href="a00353.html#a20bc17e9c86f8fe4fc21b59de789ab7a">00496</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::size_type <a class="code" href="a00353.html#a20bc17e9c86f8fe4fc21b59de789ab7a">size_type</a>;
<a name="l00497"></a><a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">00497</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::value_type <a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">value_type</a>;
<a name="l00498"></a><a class="code" href="a00353.html#a4ba5cbe694831e2dd6473b26411c5974">00498</a> <span class="keyword">typedef</span> <a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">value_type</a> *<a class="code" href="a00353.html#a4ba5cbe694831e2dd6473b26411c5974">pointer</a>;
<a name="l00499"></a>00499
<a name="l00500"></a><a class="code" href="a00353.html#a31fbd4333be082ef05e383ba4d1c3c5d">00500</a> <span class="keywordtype">void</span> <a class="code" href="a00353.html#a31fbd4333be082ef05e383ba4d1c3c5d">constraints</a> () {
<a name="l00501"></a>00501 function_requires&lt; VectorConcept&lt;vector_type&gt; &gt;();
<a name="l00502"></a>00502 function_requires&lt; DefaultConstructible&lt;vector_type&gt; &gt;();
<a name="l00503"></a>00503 function_requires&lt; Mutable_VectorExpressionConcept&lt;vector_type&gt; &gt;();
<a name="l00504"></a>00504 <a class="code" href="a00353.html#a20bc17e9c86f8fe4fc21b59de789ab7a">size_type</a> n (0);
<a name="l00505"></a>00505 <a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">value_type</a> t = <a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">value_type</a> ();
<a name="l00506"></a>00506 <a class="code" href="a00353.html#a20bc17e9c86f8fe4fc21b59de789ab7a">size_type</a> i (0);
<a name="l00507"></a>00507 <a class="code" href="a00353.html#a94157b46c7dcf3010d8294fe32efb6ff">vector_type</a> v;
<a name="l00508"></a>00508 <span class="comment">// Element support</span>
<a name="l00509"></a>00509 <a class="code" href="a00353.html#a4ba5cbe694831e2dd6473b26411c5974">pointer</a> p = v.find_element (i);
<a name="l00510"></a>00510 <span class="comment">// Element assignment</span>
<a name="l00511"></a>00511 <a class="code" href="a00353.html#a9694bfa55902a8eecc93a487779eacd5">value_type</a> r = v.insert_element (i, t);
<a name="l00512"></a>00512 v.insert_element (i, t) = r;
<a name="l00513"></a>00513 <span class="comment">// Zeroing</span>
<a name="l00514"></a>00514 v.clear ();
<a name="l00515"></a>00515 <span class="comment">// Resize</span>
<a name="l00516"></a>00516 v.resize (n);
<a name="l00517"></a>00517
<a name="l00518"></a>00518 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (p);
<a name="l00519"></a>00519 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00520"></a>00520 }
<a name="l00521"></a>00521 };
<a name="l00522"></a>00522
<a name="l00523"></a>00523 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00524"></a><a class="code" href="a00412.html">00524</a> <span class="keyword">struct </span><a class="code" href="a00412.html">SparseVectorConcept</a> {
<a name="l00525"></a><a class="code" href="a00412.html#ad2273ae7461f858ad95b2a7cdb1d6b7b">00525</a> <span class="keyword">typedef</span> V <a class="code" href="a00412.html#ad2273ae7461f858ad95b2a7cdb1d6b7b">vector_type</a>;
<a name="l00526"></a><a class="code" href="a00412.html#a634e1193b8994a102b3670a4e713ed83">00526</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::size_type <a class="code" href="a00412.html#a634e1193b8994a102b3670a4e713ed83">size_type</a>;
<a name="l00527"></a>00527
<a name="l00528"></a><a class="code" href="a00412.html#a65e6fa0ee5a4e7af46794499f06f8869">00528</a> <span class="keywordtype">void</span> <a class="code" href="a00412.html#a65e6fa0ee5a4e7af46794499f06f8869">constraints</a> () {
<a name="l00529"></a>00529 function_requires&lt; VectorConcept&lt;vector_type&gt; &gt;();
<a name="l00530"></a>00530 }
<a name="l00531"></a>00531 };
<a name="l00532"></a>00532
<a name="l00533"></a>00533 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00534"></a><a class="code" href="a00348.html">00534</a> <span class="keyword">struct </span><a class="code" href="a00348.html">Mutable_SparseVectorConcept</a> {
<a name="l00535"></a><a class="code" href="a00348.html#adece71be0da60c51a4e7df78cded6d04">00535</a> <span class="keyword">typedef</span> V <a class="code" href="a00348.html#adece71be0da60c51a4e7df78cded6d04">vector_type</a>;
<a name="l00536"></a><a class="code" href="a00348.html#a0f595f626a9ec394f20297427afbee74">00536</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::size_type <a class="code" href="a00348.html#a0f595f626a9ec394f20297427afbee74">size_type</a>;
<a name="l00537"></a><a class="code" href="a00348.html#abef9346066c338399daea5435713ae37">00537</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::value_type <a class="code" href="a00348.html#abef9346066c338399daea5435713ae37">value_type</a>;
<a name="l00538"></a>00538
<a name="l00539"></a><a class="code" href="a00348.html#a43ccbc5b3cf8d6fd10900a78b5d08022">00539</a> <span class="keywordtype">void</span> <a class="code" href="a00348.html#a43ccbc5b3cf8d6fd10900a78b5d08022">constraints</a> () {
<a name="l00540"></a>00540 function_requires&lt; SparseVectorConcept&lt;vector_type&gt; &gt;();
<a name="l00541"></a>00541 function_requires&lt; Mutable_VectorConcept&lt;vector_type&gt; &gt;();
<a name="l00542"></a>00542 <a class="code" href="a00348.html#a0f595f626a9ec394f20297427afbee74">size_type</a> i (0);
<a name="l00543"></a>00543 <a class="code" href="a00348.html#adece71be0da60c51a4e7df78cded6d04">vector_type</a> v;
<a name="l00544"></a>00544 <span class="comment">// Element erasure</span>
<a name="l00545"></a>00545 v.erase_element (i);
<a name="l00546"></a>00546 }
<a name="l00547"></a>00547 };
<a name="l00548"></a>00548
<a name="l00549"></a>00549 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M&gt;
<a name="l00550"></a><a class="code" href="a00336.html">00550</a> <span class="keyword">struct </span><a class="code" href="a00336.html">MatrixConcept</a> {
<a name="l00551"></a><a class="code" href="a00336.html#af365645bbf962f9453f7ce1f8ab59dc0">00551</a> <span class="keyword">typedef</span> M <a class="code" href="a00336.html#af365645bbf962f9453f7ce1f8ab59dc0">matrix_type</a>;
<a name="l00552"></a><a class="code" href="a00336.html#a56c9d09f07156031ff7d4f88a6be1135">00552</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00336.html#a56c9d09f07156031ff7d4f88a6be1135">size_type</a>;
<a name="l00553"></a><a class="code" href="a00336.html#a0711d7e50b8f3705ce031dcc9e7998f2">00553</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00336.html#a0711d7e50b8f3705ce031dcc9e7998f2">value_type</a>;
<a name="l00554"></a><a class="code" href="a00336.html#acf3672f8921d50d8e00beec2c0da8802">00554</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00336.html#a0711d7e50b8f3705ce031dcc9e7998f2">value_type</a> *<a class="code" href="a00336.html#acf3672f8921d50d8e00beec2c0da8802">const_pointer</a>;
<a name="l00555"></a>00555
<a name="l00556"></a><a class="code" href="a00336.html#abe1df77c898727be7e32f25d66244b2b">00556</a> <span class="keywordtype">void</span> <a class="code" href="a00336.html#abe1df77c898727be7e32f25d66244b2b">constraints</a> () {
<a name="l00557"></a>00557 function_requires&lt; MatrixExpressionConcept&lt;matrix_type&gt; &gt;();
<a name="l00558"></a>00558 <a class="code" href="a00336.html#a56c9d09f07156031ff7d4f88a6be1135">size_type</a> n (0);
<a name="l00559"></a>00559 <a class="code" href="a00336.html#a56c9d09f07156031ff7d4f88a6be1135">size_type</a> i (0), j (0);
<a name="l00560"></a>00560 <span class="comment">// Sizing constructor</span>
<a name="l00561"></a>00561 <a class="code" href="a00336.html#af365645bbf962f9453f7ce1f8ab59dc0">matrix_type</a> m (n, n);
<a name="l00562"></a>00562 <span class="comment">// Element support</span>
<a name="l00563"></a>00563 <span class="preprocessor">#ifndef SKIP_BAD</span>
<a name="l00564"></a>00564 <span class="preprocessor"></span> <a class="code" href="a00336.html#acf3672f8921d50d8e00beec2c0da8802">const_pointer</a> p = m.find_element (i, j);
<a name="l00565"></a>00565 <span class="preprocessor">#else</span>
<a name="l00566"></a>00566 <span class="preprocessor"></span> <a class="code" href="a00336.html#acf3672f8921d50d8e00beec2c0da8802">const_pointer</a> p;
<a name="l00567"></a>00567 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (i);
<a name="l00568"></a>00568 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (j);
<a name="l00569"></a>00569 <span class="preprocessor">#endif</span>
<a name="l00570"></a>00570 <span class="preprocessor"></span> <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (p);
<a name="l00571"></a>00571 }
<a name="l00572"></a>00572 };
<a name="l00573"></a>00573
<a name="l00574"></a>00574 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M&gt;
<a name="l00575"></a><a class="code" href="a00345.html">00575</a> <span class="keyword">struct </span><a class="code" href="a00345.html">Mutable_MatrixConcept</a> {
<a name="l00576"></a><a class="code" href="a00345.html#ae3865ba05b1b825197fcbadad42c6bc0">00576</a> <span class="keyword">typedef</span> M <a class="code" href="a00345.html#ae3865ba05b1b825197fcbadad42c6bc0">matrix_type</a>;
<a name="l00577"></a><a class="code" href="a00345.html#a34b6f0a80ccdbade05a5a0c85db49439">00577</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00345.html#a34b6f0a80ccdbade05a5a0c85db49439">size_type</a>;
<a name="l00578"></a><a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">00578</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">value_type</a>;
<a name="l00579"></a><a class="code" href="a00345.html#a1306d8b937d13f58660f114fdc2e3e23">00579</a> <span class="keyword">typedef</span> <a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">value_type</a> *<a class="code" href="a00345.html#a1306d8b937d13f58660f114fdc2e3e23">pointer</a>;
<a name="l00580"></a>00580
<a name="l00581"></a><a class="code" href="a00345.html#a8c507745bcdc59034846a097d76ab461">00581</a> <span class="keywordtype">void</span> <a class="code" href="a00345.html#a8c507745bcdc59034846a097d76ab461">constraints</a> () {
<a name="l00582"></a>00582 function_requires&lt; MatrixConcept&lt;matrix_type&gt; &gt;();
<a name="l00583"></a>00583 function_requires&lt; DefaultConstructible&lt;matrix_type&gt; &gt;();
<a name="l00584"></a>00584 function_requires&lt; Mutable_MatrixExpressionConcept&lt;matrix_type&gt; &gt;();
<a name="l00585"></a>00585 <a class="code" href="a00345.html#a34b6f0a80ccdbade05a5a0c85db49439">size_type</a> n (0);
<a name="l00586"></a>00586 <a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">value_type</a> t = <a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">value_type</a> ();
<a name="l00587"></a>00587 <a class="code" href="a00345.html#a34b6f0a80ccdbade05a5a0c85db49439">size_type</a> i (0), j (0);
<a name="l00588"></a>00588 <a class="code" href="a00345.html#ae3865ba05b1b825197fcbadad42c6bc0">matrix_type</a> m;
<a name="l00589"></a>00589 <span class="comment">// Element support</span>
<a name="l00590"></a>00590 <span class="preprocessor">#ifndef SKIP_BAD</span>
<a name="l00591"></a>00591 <span class="preprocessor"></span> <a class="code" href="a00345.html#a1306d8b937d13f58660f114fdc2e3e23">pointer</a> p = m.find_element (i, j);
<a name="l00592"></a>00592 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (i);
<a name="l00593"></a>00593 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (j);
<a name="l00594"></a>00594 <span class="preprocessor">#else</span>
<a name="l00595"></a>00595 <span class="preprocessor"></span> <a class="code" href="a00345.html#a1306d8b937d13f58660f114fdc2e3e23">pointer</a> p;
<a name="l00596"></a>00596 <span class="preprocessor">#endif</span>
<a name="l00597"></a>00597 <span class="preprocessor"></span> <span class="comment">// Element assigment</span>
<a name="l00598"></a>00598 <a class="code" href="a00345.html#a2c9a3cbc76f9b469968e8e06c9dbeedb">value_type</a> r = m.insert_element (i, j, t);
<a name="l00599"></a>00599 m.insert_element (i, j, t) = r;
<a name="l00600"></a>00600 <span class="comment">// Zeroing</span>
<a name="l00601"></a>00601 m.clear ();
<a name="l00602"></a>00602 <span class="comment">// Resize</span>
<a name="l00603"></a>00603 m.resize (n, n);
<a name="l00604"></a>00604 m.resize (n, n, <span class="keyword">false</span>);
<a name="l00605"></a>00605
<a name="l00606"></a>00606 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (p);
<a name="l00607"></a>00607 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00608"></a>00608 }
<a name="l00609"></a>00609 };
<a name="l00610"></a>00610
<a name="l00611"></a>00611 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M&gt;
<a name="l00612"></a><a class="code" href="a00411.html">00612</a> <span class="keyword">struct </span><a class="code" href="a00411.html">SparseMatrixConcept</a> {
<a name="l00613"></a><a class="code" href="a00411.html#a29a91d1a0c4e871fb78b9e91674e412d">00613</a> <span class="keyword">typedef</span> M <a class="code" href="a00411.html#a29a91d1a0c4e871fb78b9e91674e412d">matrix_type</a>;
<a name="l00614"></a><a class="code" href="a00411.html#a05ca9deef278c0c32bb0f152165a9ad2">00614</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00411.html#a05ca9deef278c0c32bb0f152165a9ad2">size_type</a>;
<a name="l00615"></a>00615
<a name="l00616"></a><a class="code" href="a00411.html#a549c3e8e1dbe740622c18fd197bfa691">00616</a> <span class="keywordtype">void</span> <a class="code" href="a00411.html#a549c3e8e1dbe740622c18fd197bfa691">constraints</a> () {
<a name="l00617"></a>00617 function_requires&lt; MatrixConcept&lt;matrix_type&gt; &gt;();
<a name="l00618"></a>00618 }
<a name="l00619"></a>00619 };
<a name="l00620"></a>00620
<a name="l00621"></a>00621 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M&gt;
<a name="l00622"></a><a class="code" href="a00347.html">00622</a> <span class="keyword">struct </span><a class="code" href="a00347.html">Mutable_SparseMatrixConcept</a> {
<a name="l00623"></a><a class="code" href="a00347.html#ad2aed921ff7e2876bce8d95d98a9985b">00623</a> <span class="keyword">typedef</span> M <a class="code" href="a00347.html#ad2aed921ff7e2876bce8d95d98a9985b">matrix_type</a>;
<a name="l00624"></a><a class="code" href="a00347.html#a037d3c60cd34309d84a3a73240215ad3">00624</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00347.html#a037d3c60cd34309d84a3a73240215ad3">size_type</a>;
<a name="l00625"></a><a class="code" href="a00347.html#a194b39926a8cea0e5cbeb01292309a71">00625</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00347.html#a194b39926a8cea0e5cbeb01292309a71">value_type</a>;
<a name="l00626"></a>00626
<a name="l00627"></a><a class="code" href="a00347.html#ac9feee4813d184d1876107bbadf999a3">00627</a> <span class="keywordtype">void</span> <a class="code" href="a00347.html#ac9feee4813d184d1876107bbadf999a3">constraints</a> () {
<a name="l00628"></a>00628 function_requires&lt; SparseMatrixConcept&lt;matrix_type&gt; &gt;();
<a name="l00629"></a>00629 function_requires&lt; Mutable_MatrixConcept&lt;matrix_type&gt; &gt;();
<a name="l00630"></a>00630 <a class="code" href="a00347.html#a037d3c60cd34309d84a3a73240215ad3">size_type</a> i (0), j (0);
<a name="l00631"></a>00631 <a class="code" href="a00347.html#ad2aed921ff7e2876bce8d95d98a9985b">matrix_type</a> m;
<a name="l00632"></a>00632 <span class="comment">// Elemnent erasure</span>
<a name="l00633"></a>00633 m.erase_element (i, j);
<a name="l00634"></a>00634 }
<a name="l00635"></a>00635 };
<a name="l00636"></a>00636
<a name="l00640"></a><a class="code" href="a00650.html">00640</a> <span class="keyword">namespace </span>{
<a name="l00641"></a>00641
<a name="l00642"></a>00642 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00643"></a>00643 T
<a name="l00644"></a>00644 <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (T);
<a name="l00645"></a>00645 <span class="keyword">template</span>&lt;&gt;
<a name="l00646"></a>00646 <span class="keywordtype">float</span>
<a name="l00647"></a><a class="code" href="a00650.html#a8c8248a204339f053ce1046235378c8e">00647</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<span class="keywordtype">float</span>) {
<a name="l00648"></a>00648 <span class="keywordflow">return</span> 0.f;
<a name="l00649"></a>00649 }
<a name="l00650"></a>00650 <span class="keyword">template</span>&lt;&gt;
<a name="l00651"></a>00651 <span class="keywordtype">double</span>
<a name="l00652"></a><a class="code" href="a00650.html#acbfd54f06a7272d2b7e86dc5ebac80bf">00652</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<span class="keywordtype">double</span>) {
<a name="l00653"></a>00653 <span class="keywordflow">return</span> 0.;
<a name="l00654"></a>00654 }
<a name="l00655"></a>00655 <span class="keyword">template</span>&lt;&gt;
<a name="l00656"></a>00656 <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;float&gt;</a>
<a name="l00657"></a><a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">00657</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;float&gt;</a>) {
<a name="l00658"></a>00658 <span class="keywordflow">return</span> <a class="code" href="a00590.html" title="A zero vector of type T and a given size A zero vector of type T and a given size. This is a virtual vector in the sense that no memory is allocated for storing the zero values: it still acts like any other vector. However assigning values to it will not change the zero vector into a normal vector. It must first be assigned to another normal vector by any suitable means. Its memory footprint is constant.">zero_vector&lt;float&gt;</a> ();
<a name="l00659"></a>00659 }
<a name="l00660"></a>00660 <span class="keyword">template</span>&lt;&gt;
<a name="l00661"></a>00661 <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;double&gt;</a>
<a name="l00662"></a><a class="code" href="a00650.html#a869924ed9b10209e5afa24ee60a734bc">00662</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;double&gt;</a>) {
<a name="l00663"></a>00663 <span class="keywordflow">return</span> <a class="code" href="a00590.html" title="A zero vector of type T and a given size A zero vector of type T and a given size. This is a virtual vector in the sense that no memory is allocated for storing the zero values: it still acts like any other vector. However assigning values to it will not change the zero vector into a normal vector. It must first be assigned to another normal vector by any suitable means. Its memory footprint is constant.">zero_vector&lt;double&gt;</a> ();
<a name="l00664"></a>00664 }
<a name="l00665"></a>00665 <span class="keyword">template</span>&lt;&gt;
<a name="l00666"></a>00666 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;float&gt;</a>
<a name="l00667"></a><a class="code" href="a00650.html#a10125922c2beeca91ee992c70abc9b0e">00667</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;float&gt;</a>) {
<a name="l00668"></a>00668 <span class="keywordflow">return</span> <a class="code" href="a00587.html" title="A matrix with all values of type T equal to zero.">zero_matrix&lt;float&gt;</a> ();
<a name="l00669"></a>00669 }
<a name="l00670"></a>00670 <span class="keyword">template</span>&lt;&gt;
<a name="l00671"></a>00671 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;double&gt;</a>
<a name="l00672"></a><a class="code" href="a00650.html#acac4289a7881a133f7c398bd4692ba30">00672</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;double&gt;</a>) {
<a name="l00673"></a>00673 <span class="keywordflow">return</span> <a class="code" href="a00587.html" title="A matrix with all values of type T equal to zero.">zero_matrix&lt;double&gt;</a> ();
<a name="l00674"></a>00674 }
<a name="l00675"></a>00675 <span class="keyword">template</span>&lt;&gt;
<a name="l00676"></a>00676 std::complex&lt;float&gt;
<a name="l00677"></a><a class="code" href="a00650.html#aee1f49defa91e79bc4b7095bb191a7d3">00677</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (std::complex&lt;float&gt;) {
<a name="l00678"></a>00678 <span class="keywordflow">return</span> std::complex&lt;float&gt; (0.f);
<a name="l00679"></a>00679 }
<a name="l00680"></a>00680 <span class="keyword">template</span>&lt;&gt;
<a name="l00681"></a>00681 std::complex&lt;double&gt;
<a name="l00682"></a><a class="code" href="a00650.html#a0d8b8c155b4418ec567576128c46afeb">00682</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (std::complex&lt;double&gt;) {
<a name="l00683"></a>00683 <span class="keywordflow">return</span> std::complex&lt;double&gt; (0.);
<a name="l00684"></a>00684 }
<a name="l00685"></a>00685 <span class="keyword">template</span>&lt;&gt;
<a name="l00686"></a>00686 <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;std::complex&lt;float&gt;</a> &gt;
<a name="l00687"></a><a class="code" href="a00650.html#acbb98ee26d3aa83e1eae3427bdbf48eb">00687</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00481.html" title="A dense vector of values of type T.">vector</a>&lt;std::complex&lt;float&gt; &gt;) {
<a name="l00688"></a>00688 <span class="keywordflow">return</span> <a class="code" href="a00590.html" title="A zero vector of type T and a given size A zero vector of type T and a given size. This is a virtual vector in the sense that no memory is allocated for storing the zero values: it still acts like any other vector. However assigning values to it will not change the zero vector into a normal vector. It must first be assigned to another normal vector by any suitable means. Its memory footprint is constant.">zero_vector&lt;std::complex&lt;float&gt;</a> &gt; ();
<a name="l00689"></a>00689 }
<a name="l00690"></a>00690 <span class="keyword">template</span>&lt;&gt;
<a name="l00691"></a>00691 <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;std::complex&lt;double&gt;</a> &gt;
<a name="l00692"></a><a class="code" href="a00650.html#a589cfdd095d401873f24d0f1a8677d28">00692</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00481.html" title="A dense vector of values of type T.">vector</a>&lt;std::complex&lt;double&gt; &gt;) {
<a name="l00693"></a>00693 <span class="keywordflow">return</span> <a class="code" href="a00590.html" title="A zero vector of type T and a given size A zero vector of type T and a given size. This is a virtual vector in the sense that no memory is allocated for storing the zero values: it still acts like any other vector. However assigning values to it will not change the zero vector into a normal vector. It must first be assigned to another normal vector by any suitable means. Its memory footprint is constant.">zero_vector&lt;std::complex&lt;double&gt;</a> &gt; ();
<a name="l00694"></a>00694 }
<a name="l00695"></a>00695 <span class="keyword">template</span>&lt;&gt;
<a name="l00696"></a>00696 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;float&gt;</a> &gt;
<a name="l00697"></a><a class="code" href="a00650.html#a113c792a69a6478e0eed5ef924dede5e">00697</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix</a>&lt;std::complex&lt;float&gt; &gt;) {
<a name="l00698"></a>00698 <span class="keywordflow">return</span> <a class="code" href="a00587.html" title="A matrix with all values of type T equal to zero.">zero_matrix&lt;std::complex&lt;float&gt;</a> &gt; ();
<a name="l00699"></a>00699 }
<a name="l00700"></a>00700 <span class="keyword">template</span>&lt;&gt;
<a name="l00701"></a>00701 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;double&gt;</a> &gt;
<a name="l00702"></a><a class="code" href="a00650.html#ac53879bb4c4e967e80e08e0f9737a8e5">00702</a> <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix</a>&lt;std::complex&lt;double&gt; &gt;) {
<a name="l00703"></a>00703 <span class="keywordflow">return</span> <a class="code" href="a00587.html" title="A matrix with all values of type T equal to zero.">zero_matrix&lt;std::complex&lt;double&gt;</a> &gt; ();
<a name="l00704"></a>00704 }
<a name="l00705"></a>00705
<a name="l00706"></a>00706 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00707"></a>00707 T
<a name="l00708"></a>00708 <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (T);
<a name="l00709"></a>00709 <span class="keyword">template</span>&lt;&gt;
<a name="l00710"></a>00710 <span class="keywordtype">float</span>
<a name="l00711"></a><a class="code" href="a00650.html#af766c66d5c87cd6221fe7ec5e74d5468">00711</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<span class="keywordtype">float</span>) {
<a name="l00712"></a>00712 <span class="keywordflow">return</span> 1.f;
<a name="l00713"></a>00713 }
<a name="l00714"></a>00714 <span class="keyword">template</span>&lt;&gt;
<a name="l00715"></a>00715 <span class="keywordtype">double</span>
<a name="l00716"></a><a class="code" href="a00650.html#a49df81763eb8df0c340a857ac4749fb7">00716</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<span class="keywordtype">double</span>) {
<a name="l00717"></a>00717 <span class="keywordflow">return</span> 1.;
<a name="l00718"></a>00718 }
<a name="l00719"></a>00719 <span class="keyword">template</span>&lt;&gt;
<a name="l00720"></a>00720 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;float&gt;</a>
<a name="l00721"></a><a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">00721</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;float&gt;</a>) {
<a name="l00722"></a>00722 <span class="keywordflow">return</span> <a class="code" href="a00155.html" title="An identity matrix with values of type T.">identity_matrix&lt;float&gt;</a> ();
<a name="l00723"></a>00723 }
<a name="l00724"></a>00724 <span class="keyword">template</span>&lt;&gt;
<a name="l00725"></a>00725 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;double&gt;</a>
<a name="l00726"></a><a class="code" href="a00650.html#ab8a80fc528ffba8562c974303f160f23">00726</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;double&gt;</a>) {
<a name="l00727"></a>00727 <span class="keywordflow">return</span> <a class="code" href="a00155.html" title="An identity matrix with values of type T.">identity_matrix&lt;double&gt;</a> ();
<a name="l00728"></a>00728 }
<a name="l00729"></a>00729 <span class="keyword">template</span>&lt;&gt;
<a name="l00730"></a>00730 std::complex&lt;float&gt;
<a name="l00731"></a><a class="code" href="a00650.html#a94e235efa2c3ba4800509b3be82babe1">00731</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (std::complex&lt;float&gt;) {
<a name="l00732"></a>00732 <span class="keywordflow">return</span> std::complex&lt;float&gt; (1.f);
<a name="l00733"></a>00733 }
<a name="l00734"></a>00734 <span class="keyword">template</span>&lt;&gt;
<a name="l00735"></a>00735 std::complex&lt;double&gt;
<a name="l00736"></a><a class="code" href="a00650.html#aea185b52f93f83137799b3a6ee15dbf7">00736</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (std::complex&lt;double&gt;) {
<a name="l00737"></a>00737 <span class="keywordflow">return</span> std::complex&lt;double&gt; (1.);
<a name="l00738"></a>00738 }
<a name="l00739"></a>00739 <span class="keyword">template</span>&lt;&gt;
<a name="l00740"></a>00740 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;float&gt;</a> &gt;
<a name="l00741"></a><a class="code" href="a00650.html#a675796fd1d721e88ce12b95e64ba1cd7">00741</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix</a>&lt;std::complex&lt;float&gt; &gt;) {
<a name="l00742"></a>00742 <span class="keywordflow">return</span> <a class="code" href="a00155.html" title="An identity matrix with values of type T.">identity_matrix&lt;std::complex&lt;float&gt;</a> &gt; ();
<a name="l00743"></a>00743 }
<a name="l00744"></a>00744 <span class="keyword">template</span>&lt;&gt;
<a name="l00745"></a>00745 <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;double&gt;</a> &gt;
<a name="l00746"></a><a class="code" href="a00650.html#aec77d73a9f095e915d7f1293b630a091">00746</a> <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix</a>&lt;std::complex&lt;double&gt; &gt;) {
<a name="l00747"></a>00747 <span class="keywordflow">return</span> <a class="code" href="a00155.html" title="An identity matrix with values of type T.">identity_matrix&lt;std::complex&lt;double&gt;</a> &gt; ();
<a name="l00748"></a>00748 }
<a name="l00749"></a>00749
<a name="l00750"></a>00750 <span class="keyword">template</span>&lt;<span class="keyword">class</span> E1, <span class="keyword">class</span> E2&gt;
<a name="l00751"></a>00751 <span class="keywordtype">bool</span>
<a name="l00752"></a><a class="code" href="a00650.html#aed00b32e2c0ca8c63b63855a13c80052">00752</a> <a class="code" href="a00650.html#aed00b32e2c0ca8c63b63855a13c80052">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression&lt;E1&gt;</a> &amp;e1, <span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression&lt;E2&gt;</a> &amp;e2) {
<a name="l00753"></a>00753 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00364.html">promote_traits</a>&lt;<span class="keyword">typename</span> E1::value_type,
<a name="l00754"></a>00754 <span class="keyword">typename</span> E2::value_type&gt;::promote_type value_type;
<a name="l00755"></a>00755 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">type_traits&lt;value_type&gt;::real_type</a> real_type;
<a name="l00756"></a>00756 <span class="keywordflow">return</span> <a class="code" href="a00595.html#a4ec479acd5e441d5b61ce20c8d13e8ac">norm_inf</a> (e1 - e2) == real_type<span class="comment">/*zero*/</span>();
<a name="l00757"></a>00757 }
<a name="l00758"></a>00758 <span class="keyword">template</span>&lt;<span class="keyword">class</span> E1, <span class="keyword">class</span> E2&gt;
<a name="l00759"></a>00759 <span class="keywordtype">bool</span>
<a name="l00760"></a><a class="code" href="a00650.html#a16a842c8bc60dc3857c68591cfbd2f25">00760</a> <a class="code" href="a00650.html#aed00b32e2c0ca8c63b63855a13c80052">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression&lt;E1&gt;</a> &amp;e1, <span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression&lt;E2&gt;</a> &amp;e2) {
<a name="l00761"></a>00761 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00364.html">promote_traits</a>&lt;<span class="keyword">typename</span> E1::value_type,
<a name="l00762"></a>00762 <span class="keyword">typename</span> E2::value_type&gt;::promote_type value_type;
<a name="l00763"></a>00763 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">type_traits&lt;value_type&gt;::real_type</a> real_type;
<a name="l00764"></a>00764 <span class="keywordflow">return</span> <a class="code" href="a00595.html#a4ec479acd5e441d5b61ce20c8d13e8ac">norm_inf</a> (e1 - e2) == real_type<span class="comment">/*zero*/</span>();
<a name="l00765"></a>00765 }
<a name="l00766"></a>00766
<a name="l00767"></a>00767 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00768"></a><a class="code" href="a00004.html">00768</a> <span class="keyword">struct </span><a class="code" href="a00004.html">AdditiveAbelianGroupConcept</a> {
<a name="l00769"></a><a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">00769</a> <span class="keyword">typedef</span> T <a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a>;
<a name="l00770"></a>00770
<a name="l00771"></a><a class="code" href="a00004.html#a0d3a4677e1a0c4955bbe684d5c31060d">00771</a> <span class="keywordtype">void</span> <a class="code" href="a00004.html#a0d3a4677e1a0c4955bbe684d5c31060d">constraints</a> () {
<a name="l00772"></a>00772 <span class="keywordtype">bool</span> r;
<a name="l00773"></a>00773 <a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> a = <a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> (), b = <a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> (), c = <a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> ();
<a name="l00774"></a>00774 r = (a + b) + c == a + (b + c);
<a name="l00775"></a>00775 r = <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> ()) + a == a;
<a name="l00776"></a>00776 r = a + <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> ()) == a;
<a name="l00777"></a>00777 r = a + (- a) == ZeroElement (<a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> ());
<a name="l00778"></a>00778 r = (- a) + a == ZeroElement (<a class="code" href="a00004.html#ab299f9e170587ebc90d0146a19b75948">value_type</a> ());
<a name="l00779"></a>00779 r = a + b == b + a;
<a name="l00780"></a>00780 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00781"></a>00781 }
<a name="l00782"></a>00782 };
<a name="l00783"></a>00783
<a name="l00784"></a>00784 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00785"></a><a class="code" href="a00008.html">00785</a> <span class="keyword">struct </span><a class="code" href="a00008.html">MultiplicativeAbelianGroupConcept</a> {
<a name="l00786"></a><a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">00786</a> <span class="keyword">typedef</span> T <a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a>;
<a name="l00787"></a>00787
<a name="l00788"></a><a class="code" href="a00008.html#a020b852910703e6d23d3cf3513c3f9c5">00788</a> <span class="keywordtype">void</span> <a class="code" href="a00008.html#a020b852910703e6d23d3cf3513c3f9c5">constraints</a> () {
<a name="l00789"></a>00789 <span class="keywordtype">bool</span> r;
<a name="l00790"></a>00790 <a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> a = <a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> (), b = <a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> (), c = <a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> ();
<a name="l00791"></a>00791 r = (a * b) * c == a * (b * c);
<a name="l00792"></a>00792 r = <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> ()) * a == a;
<a name="l00793"></a>00793 r = a * <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> ()) == a;
<a name="l00794"></a>00794 r = a * (<a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> ()) / a) == a;
<a name="l00795"></a>00795 r = (<a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00008.html#a8d074fac12e4eef51c1329f1df53ea8e">value_type</a> ()) / a) * a == a;
<a name="l00796"></a>00796 r = a * b == b * a;
<a name="l00797"></a>00797 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00798"></a>00798 }
<a name="l00799"></a>00799 };
<a name="l00800"></a>00800
<a name="l00801"></a>00801 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00802"></a><a class="code" href="a00010.html">00802</a> <span class="keyword">struct </span><a class="code" href="a00010.html">RingWithIdentityConcept</a> {
<a name="l00803"></a><a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">00803</a> <span class="keyword">typedef</span> T <a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a>;
<a name="l00804"></a>00804
<a name="l00805"></a><a class="code" href="a00010.html#ae7f69d35c233aa5a7961ea4dcb6fb24e">00805</a> <span class="keywordtype">void</span> <a class="code" href="a00010.html#ae7f69d35c233aa5a7961ea4dcb6fb24e">constraints</a> () {
<a name="l00806"></a>00806 function_requires&lt; AdditiveAbelianGroupConcept&lt;value_type&gt; &gt;();
<a name="l00807"></a>00807 <span class="keywordtype">bool</span> r;
<a name="l00808"></a>00808 <a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> a = <a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> (), b = <a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> (), c = <a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> ();
<a name="l00809"></a>00809 r = (a * b) * c == a * (b * c);
<a name="l00810"></a>00810 r = (a + b) * c == a * c + b * c;
<a name="l00811"></a>00811 r = <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> ()) * a == a;
<a name="l00812"></a>00812 r = a * <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00010.html#a35297aec6232153abb7d0b7955708504">value_type</a> ()) == a;
<a name="l00813"></a>00813 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00814"></a>00814 }
<a name="l00815"></a>00815 };
<a name="l00816"></a>00816
<a name="l00817"></a>00817 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00818"></a><a class="code" href="a00009.html">00818</a> <span class="keyword">struct </span><a class="code" href="a00009.html">Prod_RingWithIdentityConcept</a> {
<a name="l00819"></a><a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">00819</a> <span class="keyword">typedef</span> T <a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a>;
<a name="l00820"></a>00820
<a name="l00821"></a><a class="code" href="a00009.html#ab9fcfc822822475062c63a0860d26095">00821</a> <span class="keywordtype">void</span> <a class="code" href="a00009.html#ab9fcfc822822475062c63a0860d26095">constraints</a> () {
<a name="l00822"></a>00822 function_requires&lt; AdditiveAbelianGroupConcept&lt;value_type&gt; &gt;();
<a name="l00823"></a>00823 <span class="keywordtype">bool</span> r;
<a name="l00824"></a>00824 <a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> a = <a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> (), b = <a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> (), c = <a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> ();
<a name="l00825"></a>00825 r = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (T (<a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (a, b)), c) == <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (a, T (<a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (b, c)));
<a name="l00826"></a>00826 r = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (a + b, c) == <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (a, c) + <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (b, c);
<a name="l00827"></a>00827 r = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (<a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> ()), a) == a;
<a name="l00828"></a>00828 r = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (a, <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00009.html#abbe88ca6494508d7c998e23a5d46a8cf">value_type</a> ())) == a;
<a name="l00829"></a>00829 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00830"></a>00830 }
<a name="l00831"></a>00831 };
<a name="l00832"></a>00832
<a name="l00833"></a>00833 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00834"></a><a class="code" href="a00005.html">00834</a> <span class="keyword">struct </span><a class="code" href="a00005.html">CommutativeRingWithIdentityConcept</a> {
<a name="l00835"></a><a class="code" href="a00005.html#a1aa04595196b7bfdb2838b0349cab6b1">00835</a> <span class="keyword">typedef</span> T <a class="code" href="a00005.html#a1aa04595196b7bfdb2838b0349cab6b1">value_type</a>;
<a name="l00836"></a>00836
<a name="l00837"></a><a class="code" href="a00005.html#a12af8b9d129ea6428293d1134540c7f1">00837</a> <span class="keywordtype">void</span> <a class="code" href="a00005.html#a12af8b9d129ea6428293d1134540c7f1">constraints</a> () {
<a name="l00838"></a>00838 function_requires&lt; RingWithIdentityConcept&lt;value_type&gt; &gt;();
<a name="l00839"></a>00839 <span class="keywordtype">bool</span> r;
<a name="l00840"></a>00840 <a class="code" href="a00005.html#a1aa04595196b7bfdb2838b0349cab6b1">value_type</a> a = <a class="code" href="a00005.html#a1aa04595196b7bfdb2838b0349cab6b1">value_type</a> (), b = <a class="code" href="a00005.html#a1aa04595196b7bfdb2838b0349cab6b1">value_type</a> ();
<a name="l00841"></a>00841 r = a * b == b * a;
<a name="l00842"></a>00842 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00843"></a>00843 }
<a name="l00844"></a>00844 };
<a name="l00845"></a>00845
<a name="l00846"></a>00846 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00847"></a><a class="code" href="a00006.html">00847</a> <span class="keyword">struct </span><a class="code" href="a00006.html">FieldConcept</a> {
<a name="l00848"></a><a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">00848</a> <span class="keyword">typedef</span> T <a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a>;
<a name="l00849"></a>00849
<a name="l00850"></a><a class="code" href="a00006.html#af86651364a348d37017796346e1fd36d">00850</a> <span class="keywordtype">void</span> <a class="code" href="a00006.html#af86651364a348d37017796346e1fd36d">constraints</a> () {
<a name="l00851"></a>00851 function_requires&lt; CommutativeRingWithIdentityConcept&lt;value_type&gt; &gt;();
<a name="l00852"></a>00852 <span class="keywordtype">bool</span> r;
<a name="l00853"></a>00853 <a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> a = <a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> ();
<a name="l00854"></a>00854 r = a == <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> ()) || a * (<a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> ()) / a) == a;
<a name="l00855"></a>00855 r = a == <a class="code" href="a00650.html#aeb6187a573758c35bd41f4974b3ab168">ZeroElement</a> (<a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> ()) || (<a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00006.html#a68eb6c0815d7bff9685130cf339f2655">value_type</a> ()) / a) * a == a;
<a name="l00856"></a>00856 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00857"></a>00857 }
<a name="l00858"></a>00858 };
<a name="l00859"></a>00859
<a name="l00860"></a>00860 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> V&gt;
<a name="l00861"></a><a class="code" href="a00011.html">00861</a> <span class="keyword">struct </span><a class="code" href="a00011.html">VectorSpaceConcept</a> {
<a name="l00862"></a><a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">00862</a> <span class="keyword">typedef</span> T <a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">value_type</a>;
<a name="l00863"></a><a class="code" href="a00011.html#a08dee308e531bcae44ceaaf14ee30afb">00863</a> <span class="keyword">typedef</span> V <a class="code" href="a00011.html#a08dee308e531bcae44ceaaf14ee30afb">vector_type</a>;
<a name="l00864"></a>00864
<a name="l00865"></a><a class="code" href="a00011.html#a549d41cfdac6abf9cf393eac2ef44132">00865</a> <span class="keywordtype">void</span> <a class="code" href="a00011.html#a549d41cfdac6abf9cf393eac2ef44132">constraints</a> () {
<a name="l00866"></a>00866 function_requires&lt; FieldConcept&lt;value_type&gt; &gt;();
<a name="l00867"></a>00867 function_requires&lt; AdditiveAbelianGroupConcept&lt;vector_type&gt; &gt;();
<a name="l00868"></a>00868 <span class="keywordtype">bool</span> r;
<a name="l00869"></a>00869 <a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">value_type</a> alpha = <a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">value_type</a> (), beta = <a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">value_type</a> ();
<a name="l00870"></a>00870 <a class="code" href="a00011.html#a08dee308e531bcae44ceaaf14ee30afb">vector_type</a> a = <a class="code" href="a00011.html#a08dee308e531bcae44ceaaf14ee30afb">vector_type</a> (), b = <a class="code" href="a00011.html#a08dee308e531bcae44ceaaf14ee30afb">vector_type</a> ();
<a name="l00871"></a>00871 r = alpha * (a + b) == alpha * a + alpha * b;
<a name="l00872"></a>00872 r = (alpha + beta) * a == alpha * a + beta * a;
<a name="l00873"></a>00873 r = (alpha * beta) * a == alpha * (beta * a);
<a name="l00874"></a>00874 r = <a class="code" href="a00650.html#aa890cf75c1456fd3456abbe5c22dd10b">OneElement</a> (<a class="code" href="a00011.html#aa12f8bcad40d52e38ef3f68ea29fde4d">value_type</a> ()) * a == a;
<a name="l00875"></a>00875 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00876"></a>00876 }
<a name="l00877"></a>00877 };
<a name="l00878"></a>00878
<a name="l00879"></a>00879 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> V, <span class="keyword">class</span> M&gt;
<a name="l00880"></a><a class="code" href="a00007.html">00880</a> <span class="keyword">struct </span><a class="code" href="a00007.html">LinearOperatorConcept</a> {
<a name="l00881"></a><a class="code" href="a00007.html#a1723c0d21f07ba0e572f20bde3892d02">00881</a> <span class="keyword">typedef</span> T <a class="code" href="a00007.html#a1723c0d21f07ba0e572f20bde3892d02">value_type</a>;
<a name="l00882"></a><a class="code" href="a00007.html#a96373ed4f67b5a159109a64525f6d883">00882</a> <span class="keyword">typedef</span> V <a class="code" href="a00007.html#a96373ed4f67b5a159109a64525f6d883">vector_type</a>;
<a name="l00883"></a><a class="code" href="a00007.html#af5c373c796006fa8a5840ac03169069b">00883</a> <span class="keyword">typedef</span> M <a class="code" href="a00007.html#af5c373c796006fa8a5840ac03169069b">matrix_type</a>;
<a name="l00884"></a>00884
<a name="l00885"></a><a class="code" href="a00007.html#a13c418dc389f5160d95d61732758890a">00885</a> <span class="keywordtype">void</span> <a class="code" href="a00007.html#a13c418dc389f5160d95d61732758890a">constraints</a> () {
<a name="l00886"></a>00886 function_requires&lt; VectorSpaceConcept&lt;value_type, vector_type&gt; &gt;();
<a name="l00887"></a>00887 <span class="keywordtype">bool</span> r;
<a name="l00888"></a>00888 <a class="code" href="a00007.html#a1723c0d21f07ba0e572f20bde3892d02">value_type</a> alpha = <a class="code" href="a00007.html#a1723c0d21f07ba0e572f20bde3892d02">value_type</a> (), beta = <a class="code" href="a00007.html#a1723c0d21f07ba0e572f20bde3892d02">value_type</a> ();
<a name="l00889"></a>00889 <a class="code" href="a00007.html#a96373ed4f67b5a159109a64525f6d883">vector_type</a> a = <a class="code" href="a00007.html#a96373ed4f67b5a159109a64525f6d883">vector_type</a> (), b = <a class="code" href="a00007.html#a96373ed4f67b5a159109a64525f6d883">vector_type</a> ();
<a name="l00890"></a>00890 <a class="code" href="a00007.html#af5c373c796006fa8a5840ac03169069b">matrix_type</a> A = <a class="code" href="a00007.html#af5c373c796006fa8a5840ac03169069b">matrix_type</a> ();
<a name="l00891"></a>00891 r = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (A, alpha * a + beta * b) == alpha * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (A, a) + beta * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (A, b);
<a name="l00892"></a>00892 <a class="code" href="a00653.html#a3a2e7ac9dee5d32c7720afbbbe124942">ignore_unused_variable_warning</a> (r);
<a name="l00893"></a>00893 }
<a name="l00894"></a>00894 };
<a name="l00895"></a>00895
<a name="l00896"></a><a class="code" href="a00650.html#a91d62efffcb3ec2a76a1700b08315164">00896</a> <span class="keywordtype">void</span> <a class="code" href="a00650.html#a91d62efffcb3ec2a76a1700b08315164">concept_checks</a> () {
<a name="l00897"></a>00897
<a name="l00898"></a>00898 <span class="comment">// Allow tests to be group to keep down compiler storage requirement</span>
<a name="l00899"></a>00899 <span class="preprocessor">#ifdef INTERAL</span>
<a name="l00900"></a>00900 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_STORAGE</span>
<a name="l00901"></a>00901 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_VECTOR</span>
<a name="l00902"></a>00902 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_MATRIX</span>
<a name="l00903"></a>00903 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_SPECIAL</span>
<a name="l00904"></a>00904 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_SPARSE</span>
<a name="l00905"></a>00905 <span class="preprocessor"></span><span class="preprocessor">#define INTERNAL_EXPRESSION</span>
<a name="l00906"></a>00906 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00907"></a>00907 <span class="preprocessor"></span>
<a name="l00908"></a>00908 <span class="comment">// TODO enable this for development</span>
<a name="l00909"></a>00909 <span class="comment">// #define VIEW_CONCEPTS</span>
<a name="l00910"></a>00910
<a name="l00911"></a>00911 <span class="comment">// Element value type for tests</span>
<a name="l00912"></a>00912 <span class="keyword">typedef</span> <span class="keywordtype">float</span> T;
<a name="l00913"></a>00913
<a name="l00914"></a>00914 <span class="comment">// Storage Array</span>
<a name="l00915"></a>00915 <span class="preprocessor">#if defined (INTERNAL_STORAGE) || defined (INTERNAL_STORAGE_DENSE)</span>
<a name="l00916"></a>00916 <span class="preprocessor"></span> {
<a name="l00917"></a>00917 <span class="keyword">typedef</span> std::vector&lt;T&gt; container_model;
<a name="l00918"></a>00918 function_requires&lt; Mutable_StorageArrayConcept&lt;container_model&gt; &gt;();
<a name="l00919"></a>00919 function_requires&lt; RandomAccessIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00920"></a>00920 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l00921"></a>00921 }
<a name="l00922"></a>00922
<a name="l00923"></a>00923 {
<a name="l00924"></a>00924 <span class="keyword">typedef</span> <a class="code" href="a00040.html">bounded_array&lt;T, 1&gt;</a> container_model;
<a name="l00925"></a>00925 function_requires&lt; Mutable_StorageArrayConcept&lt;container_model&gt; &gt;();
<a name="l00926"></a>00926 function_requires&lt; RandomAccessIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00927"></a>00927 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l00928"></a>00928 }
<a name="l00929"></a>00929
<a name="l00930"></a>00930 {
<a name="l00931"></a>00931 <span class="keyword">typedef</span> <a class="code" href="a00473.html">unbounded_array&lt;T&gt;</a> container_model;
<a name="l00932"></a>00932 function_requires&lt; Mutable_StorageArrayConcept&lt;container_model&gt; &gt;();
<a name="l00933"></a>00933 function_requires&lt; RandomAccessIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00934"></a>00934 function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l00935"></a>00935 }
<a name="l00936"></a>00936
<a name="l00937"></a>00937 <span class="comment">/* FIXME array_adaptors are in progress</span>
<a name="l00938"></a>00938 <span class="comment"> {</span>
<a name="l00939"></a>00939 <span class="comment"> typedef array_adaptor&lt;T&gt; container_model;</span>
<a name="l00940"></a>00940 <span class="comment"> function_requires&lt; Mutable_StorageArrayConcept&lt;container_model&gt; &gt;();</span>
<a name="l00941"></a>00941 <span class="comment"> function_requires&lt; RandomAccessIteratorConcept&lt;container_model::const_iterator&gt; &gt;();</span>
<a name="l00942"></a>00942 <span class="comment"> function_requires&lt; Mutable_RandomAccessIteratorConcept&lt;container_model::iterator&gt; &gt;();</span>
<a name="l00943"></a>00943 <span class="comment"> }</span>
<a name="l00944"></a>00944 <span class="comment">*/</span>
<a name="l00945"></a>00945
<a name="l00946"></a>00946 {
<a name="l00947"></a>00947 <span class="keyword">typedef</span> <a class="code" href="a00001.html">range</a> container_model;
<a name="l00948"></a>00948 function_requires&lt; IndexSetConcept&lt;range&gt; &gt;();
<a name="l00949"></a>00949 function_requires&lt; RandomAccessIteratorConcept&lt;range::const_iterator&gt; &gt;();
<a name="l00950"></a>00950 }
<a name="l00951"></a>00951
<a name="l00952"></a>00952 {
<a name="l00953"></a>00953 <span class="keyword">typedef</span> <a class="code" href="a00002.html">slice</a> container_model;
<a name="l00954"></a>00954 function_requires&lt; IndexSetConcept&lt;range&gt; &gt;();
<a name="l00955"></a>00955 function_requires&lt; RandomAccessIteratorConcept&lt;range::const_iterator&gt; &gt;();
<a name="l00956"></a>00956 }
<a name="l00957"></a>00957
<a name="l00958"></a>00958 {
<a name="l00959"></a>00959 <span class="keyword">typedef</span> <a class="code" href="a00176.html">indirect_array&lt;&gt;</a> container_model;
<a name="l00960"></a>00960 function_requires&lt; IndexSetConcept&lt;range&gt; &gt;();
<a name="l00961"></a>00961 function_requires&lt; RandomAccessIteratorConcept&lt;range::const_iterator&gt; &gt;();
<a name="l00962"></a>00962 }
<a name="l00963"></a>00963 <span class="preprocessor">#endif</span>
<a name="l00964"></a>00964 <span class="preprocessor"></span>
<a name="l00965"></a>00965 <span class="comment">// Storage Sparse</span>
<a name="l00966"></a>00966 <span class="preprocessor">#if defined (INTERNAL_STORAGE) || defined (INTERNAL_STORAGE_SPARSE)</span>
<a name="l00967"></a>00967 <span class="preprocessor"></span> {
<a name="l00968"></a>00968 <span class="keyword">typedef</span> <a class="code" href="a00203.html">map_array&lt;std::size_t, T&gt;</a> container_model;
<a name="l00969"></a>00969 function_requires&lt; Mutable_StorageSparseConcept&lt;container_model&gt; &gt;();
<a name="l00970"></a>00970 function_requires&lt; RandomAccessIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00971"></a>00971 function_requires&lt; RandomAccessIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l00972"></a>00972 }
<a name="l00973"></a>00973
<a name="l00974"></a>00974 {
<a name="l00975"></a>00975 <span class="keyword">typedef</span> std::map&lt;std::size_t, T&gt; container_model;
<a name="l00976"></a>00976 function_requires&lt; Mutable_StorageSparseConcept&lt;container_model &gt; &gt;();
<a name="l00977"></a>00977 function_requires&lt; BidirectionalIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00978"></a>00978 function_requires&lt; BidirectionalIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l00979"></a>00979 }
<a name="l00980"></a>00980 <span class="preprocessor">#endif</span>
<a name="l00981"></a>00981 <span class="preprocessor"></span>
<a name="l00982"></a>00982 <span class="preprocessor">#ifdef VIEW_CONCEPTS</span>
<a name="l00983"></a>00983 <span class="preprocessor"></span> <span class="comment">// read only vectors</span>
<a name="l00984"></a>00984 {
<a name="l00985"></a>00985 <span class="keyword">typedef</span> vector_view&lt;T&gt; container_model;
<a name="l00986"></a>00986 function_requires&lt; RandomAccessContainerConcept&lt;container_model&gt; &gt;();
<a name="l00987"></a>00987 function_requires&lt; VectorConcept&lt;container_model&gt; &gt;();
<a name="l00988"></a>00988 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l00989"></a>00989 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l00990"></a>00990 }
<a name="l00991"></a>00991 <span class="preprocessor">#endif</span>
<a name="l00992"></a>00992 <span class="preprocessor"></span>
<a name="l00993"></a>00993 <span class="comment">// Vector</span>
<a name="l00994"></a>00994 <span class="preprocessor">#if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_DENSE)</span>
<a name="l00995"></a>00995 <span class="preprocessor"></span> {
<a name="l00996"></a>00996 <span class="keyword">typedef</span> <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;T&gt;</a> container_model;
<a name="l00997"></a>00997 function_requires&lt; RandomAccessContainerConcept&lt;container_model&gt; &gt;();
<a name="l00998"></a>00998 function_requires&lt; Mutable_VectorConcept&lt;container_model&gt; &gt;();
<a name="l00999"></a>00999 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01000"></a>01000 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01001"></a>01001 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01002"></a>01002 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01003"></a>01003 }
<a name="l01004"></a>01004
<a name="l01005"></a>01005 {
<a name="l01006"></a>01006 <span class="keyword">typedef</span> <a class="code" href="a00590.html" title="A zero vector of type T and a given size A zero vector of type T and a given size. This is a virtual vector in the sense that no memory is allocated for storing the zero values: it still acts like any other vector. However assigning values to it will not change the zero vector into a normal vector. It must first be assigned to another normal vector by any suitable means. Its memory footprint is constant.">zero_vector&lt;T&gt;</a> container_model;
<a name="l01007"></a>01007 function_requires&lt; VectorConcept&lt;container_model&gt; &gt;();
<a name="l01008"></a>01008 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01009"></a>01009 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01010"></a>01010 }
<a name="l01011"></a>01011
<a name="l01012"></a>01012 {
<a name="l01013"></a>01013 <span class="keyword">typedef</span> <a class="code" href="a00476.html" title="unit_vector represents a canonical unit vector unit_vector represents a canonical unit vector...">unit_vector&lt;T&gt;</a> container_model;
<a name="l01014"></a>01014 function_requires&lt; VectorConcept&lt;container_model&gt; &gt;();
<a name="l01015"></a>01015 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01016"></a>01016 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01017"></a>01017 }
<a name="l01018"></a>01018
<a name="l01019"></a>01019 {
<a name="l01020"></a>01020 <span class="keyword">typedef</span> <a class="code" href="a00404.html" title="A scalar (i.e. unique value) vector of type T and a given size A scalar (i.e. unique value) vector of...">scalar_vector&lt;T&gt;</a> container_model;
<a name="l01021"></a>01021 function_requires&lt; VectorConcept&lt;container_model&gt; &gt;();
<a name="l01022"></a>01022 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01023"></a>01023 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01024"></a>01024 }
<a name="l01025"></a>01025
<a name="l01026"></a>01026 {
<a name="l01027"></a>01027 <span class="keyword">typedef</span> <a class="code" href="a00049.html" title="A dense vector of values of type T with the given size. The data is stored as an ordinary C++ array T...">c_vector&lt;T, 1&gt;</a> container_model;
<a name="l01028"></a>01028 function_requires&lt; Mutable_VectorConcept&lt;container_model&gt; &gt;();
<a name="l01029"></a>01029 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01030"></a>01030 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01031"></a>01031 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01032"></a>01032 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01033"></a>01033 }
<a name="l01034"></a>01034 <span class="preprocessor">#endif</span>
<a name="l01035"></a>01035 <span class="preprocessor"></span>
<a name="l01036"></a>01036 <span class="comment">// Vector Proxies</span>
<a name="l01037"></a>01037 <span class="preprocessor">#if defined (INTERNAL_VECTOR) || defined (INTERNAL_VECTOR_PROXY)</span>
<a name="l01038"></a>01038 <span class="preprocessor"></span> {
<a name="l01039"></a>01039 <span class="keyword">typedef</span> <a class="code" href="a00528.html" title="A vector referencing a continuous subvector of elements of vector v containing all elements specified...">vector_range&lt;vector&lt;T&gt;</a> &gt; container_model;
<a name="l01040"></a>01040 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01041"></a>01041 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01042"></a>01042 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01043"></a>01043 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01044"></a>01044 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01045"></a>01045 }
<a name="l01046"></a>01046
<a name="l01047"></a>01047 {
<a name="l01048"></a>01048 <span class="keyword">typedef</span> <a class="code" href="a00540.html" title="A vector referencing a non continuous subvector of elements of vector v containing all elements speci...">vector_slice&lt;vector&lt;T&gt;</a> &gt; container_model;
<a name="l01049"></a>01049 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01050"></a>01050 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01051"></a>01051 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01052"></a>01052 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01053"></a>01053 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01054"></a>01054 }
<a name="l01055"></a>01055
<a name="l01056"></a>01056 {
<a name="l01057"></a>01057 <span class="keyword">typedef</span> <a class="code" href="a00510.html" title="A vector referencing a non continuous subvector of elements given another vector of indices...">vector_indirect&lt;vector&lt;T&gt;</a> &gt; container_model;
<a name="l01058"></a>01058 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01059"></a>01059 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01060"></a>01060 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01061"></a>01061 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01062"></a>01062 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01063"></a>01063 }
<a name="l01064"></a>01064 <span class="preprocessor">#endif</span>
<a name="l01065"></a>01065 <span class="preprocessor"></span>
<a name="l01066"></a>01066 <span class="comment">// Sparse Vector</span>
<a name="l01067"></a>01067 <span class="preprocessor">#if defined (INTERNAL_SPARSE) || defined (INTERNAL_VECTOR_SPARSE)</span>
<a name="l01068"></a>01068 <span class="preprocessor"></span> {
<a name="l01069"></a>01069 <span class="keyword">typedef</span> <a class="code" href="a00210.html" title="Index map based sparse vector.">mapped_vector&lt;T&gt;</a> container_model;
<a name="l01070"></a>01070 function_requires&lt; Mutable_SparseVectorConcept&lt;container_model&gt; &gt;();
<a name="l01071"></a>01071 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01072"></a>01072 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01073"></a>01073 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01074"></a>01074 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01075"></a>01075 }
<a name="l01076"></a>01076
<a name="l01077"></a>01077 {
<a name="l01078"></a>01078 <span class="keyword">typedef</span> <a class="code" href="a00062.html" title="Compressed array based sparse vector.">compressed_vector&lt;T&gt;</a> container_model;
<a name="l01079"></a>01079 function_requires&lt; Mutable_SparseVectorConcept&lt;container_model&gt; &gt;();
<a name="l01080"></a>01080 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01081"></a>01081 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01082"></a>01082 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01083"></a>01083 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01084"></a>01084 }
<a name="l01085"></a>01085
<a name="l01086"></a>01086 {
<a name="l01087"></a>01087 <span class="keyword">typedef</span> <a class="code" href="a00078.html" title="Coordimate array based sparse vector.">coordinate_vector&lt;T&gt;</a> container_model;
<a name="l01088"></a>01088 function_requires&lt; Mutable_SparseVectorConcept&lt;container_model&gt; &gt;();
<a name="l01089"></a>01089 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01090"></a>01090 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01091"></a>01091 function_requires&lt; IndexedBidirectional1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01092"></a>01092 function_requires&lt; Mutable_IndexedBidirectional1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01093"></a>01093 }
<a name="l01094"></a>01094 <span class="preprocessor">#endif</span>
<a name="l01095"></a>01095 <span class="preprocessor"></span>
<a name="l01096"></a>01096 <span class="comment">// Matrix</span>
<a name="l01097"></a>01097 <span class="preprocessor">#if defined (INTERNAL_MATRIX) || defined (INTERNAL_MATRIX_DENSE)</span>
<a name="l01098"></a>01098 <span class="preprocessor"></span> {
<a name="l01099"></a>01099 <span class="keyword">typedef</span> <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;T&gt;</a> container_model;
<a name="l01100"></a>01100 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01101"></a>01101 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01102"></a>01102 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01103"></a>01103 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01104"></a>01104 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01105"></a>01105 }
<a name="l01106"></a>01106
<a name="l01107"></a>01107 {
<a name="l01108"></a>01108 <span class="keyword">typedef</span> <a class="code" href="a00523.html" title="A dense matrix of values of type T stored as a vector of vectors.">vector_of_vector&lt;T&gt;</a> container_model;
<a name="l01109"></a>01109 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01110"></a>01110 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01111"></a>01111 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01112"></a>01112 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01113"></a>01113 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01114"></a>01114 }
<a name="l01115"></a>01115
<a name="l01116"></a>01116 {
<a name="l01117"></a>01117 <span class="keyword">typedef</span> <a class="code" href="a00587.html" title="A matrix with all values of type T equal to zero.">zero_matrix&lt;T&gt;</a> container_model;
<a name="l01118"></a>01118 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01119"></a>01119 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01120"></a>01120 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01121"></a>01121 }
<a name="l01122"></a>01122
<a name="l01123"></a>01123 {
<a name="l01124"></a>01124 <span class="keyword">typedef</span> <a class="code" href="a00155.html" title="An identity matrix with values of type T.">identity_matrix&lt;T&gt;</a> container_model;
<a name="l01125"></a>01125 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01126"></a>01126 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01127"></a>01127 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01128"></a>01128 }
<a name="l01129"></a>01129
<a name="l01130"></a>01130 {
<a name="l01131"></a>01131 <span class="keyword">typedef</span> <a class="code" href="a00382.html" title="A matrix with all values of type T equal to the same value.">scalar_matrix&lt;T&gt;</a> container_model;
<a name="l01132"></a>01132 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01133"></a>01133 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01134"></a>01134 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01135"></a>01135 }
<a name="l01136"></a>01136
<a name="l01137"></a>01137 {
<a name="l01138"></a>01138 <span class="keyword">typedef</span> <a class="code" href="a00044.html" title="An array based matrix class which size is defined at type specification or object instanciation...">c_matrix&lt;T, 1, 1&gt;</a> container_model;
<a name="l01139"></a>01139 function_requires&lt; Mutable_MatrixConcept&lt;matrix&lt;T&gt; &gt; &gt;();
<a name="l01140"></a>01140 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01141"></a>01141 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01142"></a>01142 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01143"></a>01143 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01144"></a>01144 }
<a name="l01145"></a>01145 <span class="preprocessor">#endif</span>
<a name="l01146"></a>01146 <span class="preprocessor"></span>
<a name="l01147"></a>01147 <span class="comment">// Matrix Proxies</span>
<a name="l01148"></a>01148 <span class="preprocessor">#if defined (INTERNAL_MATRIX) || defined (INTERNAL_MATRIX_PROXY)</span>
<a name="l01149"></a>01149 <span class="preprocessor"></span> {
<a name="l01150"></a>01150 <span class="keyword">typedef</span> <a class="code" href="a00276.html">matrix_row&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01151"></a>01151 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01152"></a>01152 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01153"></a>01153 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01154"></a>01154 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01155"></a>01155 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01156"></a>01156 }
<a name="l01157"></a>01157
<a name="l01158"></a>01158 {
<a name="l01159"></a>01159 <span class="keyword">typedef</span> <a class="code" href="a00247.html">matrix_column&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01160"></a>01160 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01161"></a>01161 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01162"></a>01162 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01163"></a>01163 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01164"></a>01164 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01165"></a>01165 }
<a name="l01166"></a>01166
<a name="l01167"></a>01167 {
<a name="l01168"></a>01168 <span class="keyword">typedef</span> <a class="code" href="a00327.html">matrix_vector_range&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01169"></a>01169 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01170"></a>01170 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01171"></a>01171 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01172"></a>01172 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01173"></a>01173 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01174"></a>01174 }
<a name="l01175"></a>01175
<a name="l01176"></a>01176 {
<a name="l01177"></a>01177 <span class="keyword">typedef</span> <a class="code" href="a00330.html">matrix_vector_slice&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01178"></a>01178 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01179"></a>01179 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01180"></a>01180 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01181"></a>01181 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01182"></a>01182 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01183"></a>01183 }
<a name="l01184"></a>01184
<a name="l01185"></a>01185 {
<a name="l01186"></a>01186 <span class="keyword">typedef</span> <a class="code" href="a00322.html">matrix_vector_indirect&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01187"></a>01187 function_requires&lt; Mutable_VectorExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01188"></a>01188 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_iterator&gt; &gt;();
<a name="l01189"></a>01189 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::iterator&gt; &gt;();
<a name="l01190"></a>01190 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;container_model::const_reverse_iterator&gt; &gt;();
<a name="l01191"></a>01191 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;container_model::reverse_iterator&gt; &gt;();
<a name="l01192"></a>01192 }
<a name="l01193"></a>01193
<a name="l01194"></a>01194 {
<a name="l01195"></a>01195 <span class="keyword">typedef</span> <a class="code" href="a00270.html">matrix_range&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01196"></a>01196 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01197"></a>01197 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01198"></a>01198 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01199"></a>01199 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01200"></a>01200 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01201"></a>01201 }
<a name="l01202"></a>01202
<a name="l01203"></a>01203 {
<a name="l01204"></a>01204 <span class="keyword">typedef</span> <a class="code" href="a00282.html">matrix_slice&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01205"></a>01205 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01206"></a>01206 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01207"></a>01207 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01208"></a>01208 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01209"></a>01209 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01210"></a>01210 }
<a name="l01211"></a>01211
<a name="l01212"></a>01212 {
<a name="l01213"></a>01213 <span class="keyword">typedef</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01214"></a>01214 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01215"></a>01215 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01216"></a>01216 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01217"></a>01217 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01218"></a>01218 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01219"></a>01219 }
<a name="l01220"></a>01220 <span class="preprocessor">#endif</span>
<a name="l01221"></a>01221 <span class="preprocessor"></span>
<a name="l01222"></a>01222 <span class="comment">// Banded Matrix</span>
<a name="l01223"></a>01223 <span class="preprocessor">#if defined (INTERNAL_SPECIAL) || defined (INTERNAL_BANDED)</span>
<a name="l01224"></a>01224 <span class="preprocessor"></span> {
<a name="l01225"></a>01225 <span class="keyword">typedef</span> <a class="code" href="a00022.html" title="A banded matrix of values of type T.">banded_matrix&lt;T&gt;</a> container_model;
<a name="l01226"></a>01226 function_requires&lt; Mutable_MatrixConcept&lt;container_model&gt; &gt;();
<a name="l01227"></a>01227 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01228"></a>01228 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01229"></a>01229 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01230"></a>01230 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01231"></a>01231 }
<a name="l01232"></a>01232
<a name="l01233"></a>01233 {
<a name="l01234"></a>01234 <span class="keyword">typedef</span> <a class="code" href="a00017.html" title="A banded matrix adaptator: convert a any matrix into a banded matrix expression.">banded_adaptor&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01235"></a>01235 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01236"></a>01236 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01237"></a>01237 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01238"></a>01238 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01239"></a>01239 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01240"></a>01240 }
<a name="l01241"></a>01241 <span class="preprocessor">#endif</span>
<a name="l01242"></a>01242 <span class="preprocessor"></span>
<a name="l01243"></a>01243 <span class="comment">// Triangular Matrix</span>
<a name="l01244"></a>01244 <span class="preprocessor">#if defined (INTERNAL_SPECIAL) || defined (INTERNAL_TRIANGULAR)</span>
<a name="l01245"></a>01245 <span class="preprocessor"></span> {
<a name="l01246"></a>01246 <span class="keyword">typedef</span> <a class="code" href="a00458.html" title="A triangular matrix of values of type T.">triangular_matrix&lt;T&gt;</a> container_model;
<a name="l01247"></a>01247 function_requires&lt; Mutable_MatrixConcept&lt;container_model&gt; &gt;();
<a name="l01248"></a>01248 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01249"></a>01249 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01250"></a>01250 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01251"></a>01251 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01252"></a>01252 }
<a name="l01253"></a>01253
<a name="l01254"></a>01254 {
<a name="l01255"></a>01255 <span class="keyword">typedef</span> <a class="code" href="a00453.html">triangular_adaptor&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01256"></a>01256 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01257"></a>01257 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01258"></a>01258 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01259"></a>01259 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01260"></a>01260 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01261"></a>01261 }
<a name="l01262"></a>01262 <span class="preprocessor">#endif</span>
<a name="l01263"></a>01263 <span class="preprocessor"></span>
<a name="l01264"></a>01264 <span class="comment">// Symmetric Matrix</span>
<a name="l01265"></a>01265 <span class="preprocessor">#if defined (INTERNA_SPECIAL) || defined (INTERNAL_SYMMETRIC)</span>
<a name="l01266"></a>01266 <span class="preprocessor"></span> {
<a name="l01267"></a>01267 <span class="keyword">typedef</span> <a class="code" href="a00440.html">symmetric_matrix&lt;T&gt;</a> container_model;
<a name="l01268"></a>01268 function_requires&lt; Mutable_MatrixConcept&lt;container_model&gt; &gt;();
<a name="l01269"></a>01269 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01270"></a>01270 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01271"></a>01271 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01272"></a>01272 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01273"></a>01273 }
<a name="l01274"></a>01274
<a name="l01275"></a>01275 {
<a name="l01276"></a>01276 <span class="keyword">typedef</span> <a class="code" href="a00017.html" title="A banded matrix adaptator: convert a any matrix into a banded matrix expression.">banded_adaptor&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01277"></a>01277 <span class="preprocessor">#ifndef SKIP_BAD</span>
<a name="l01278"></a>01278 <span class="preprocessor"></span> <span class="comment">// const_iterator (iterator) constructor is bad</span>
<a name="l01279"></a>01279 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01280"></a>01280 <span class="preprocessor">#endif</span>
<a name="l01281"></a>01281 <span class="preprocessor"></span> function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01282"></a>01282 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01283"></a>01283 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01284"></a>01284 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01285"></a>01285 }
<a name="l01286"></a>01286 <span class="preprocessor">#endif</span>
<a name="l01287"></a>01287 <span class="preprocessor"></span>
<a name="l01288"></a>01288 <span class="comment">// Hermitian Matrix</span>
<a name="l01289"></a>01289 <span class="preprocessor">#if defined (INTERNAL_SPECIAL) || defined (INTERNAL_HERMITIAN)</span>
<a name="l01290"></a>01290 <span class="preprocessor"></span> {
<a name="l01291"></a>01291 <span class="keyword">typedef</span> <a class="code" href="a00150.html" title="A hermitian matrix of values of type T.">hermitian_matrix&lt;T&gt;</a> container_model;
<a name="l01292"></a>01292 function_requires&lt; Mutable_MatrixConcept&lt;container_model&gt; &gt;();
<a name="l01293"></a>01293 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01294"></a>01294 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01295"></a>01295 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01296"></a>01296 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01297"></a>01297 }
<a name="l01298"></a>01298
<a name="l01299"></a>01299 {
<a name="l01300"></a>01300 <span class="keyword">typedef</span> <a class="code" href="a00145.html" title="A Hermitian matrix adaptator: convert a any matrix into a Hermitian matrix expression.">hermitian_adaptor&lt;matrix&lt;T&gt;</a> &gt; container_model;
<a name="l01301"></a>01301 <span class="preprocessor">#ifndef SKIP_BAD</span>
<a name="l01302"></a>01302 <span class="preprocessor"></span> <span class="comment">// const_iterator (iterator) constructor is bad</span>
<a name="l01303"></a>01303 function_requires&lt; Mutable_MatrixExpressionConcept&lt;container_model&gt; &gt;();
<a name="l01304"></a>01304 <span class="preprocessor">#endif</span>
<a name="l01305"></a>01305 <span class="preprocessor"></span> function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01306"></a>01306 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01307"></a>01307 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01308"></a>01308 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01309"></a>01309 }
<a name="l01310"></a>01310 <span class="preprocessor">#endif</span>
<a name="l01311"></a>01311 <span class="preprocessor"></span>
<a name="l01312"></a>01312 <span class="comment">// Sparse Matrix</span>
<a name="l01313"></a>01313 <span class="preprocessor">#if defined (INTERNAL_SPARSE) || defined (INTERNAL_MATRIX_SPARSE)</span>
<a name="l01314"></a>01314 <span class="preprocessor"></span> {
<a name="l01315"></a>01315 <span class="keyword">typedef</span> <a class="code" href="a00205.html" title="Index map based sparse matrix of values of type T.">mapped_matrix&lt;T&gt;</a> container_model;
<a name="l01316"></a>01316 function_requires&lt; Mutable_SparseMatrixConcept&lt;container_model&gt; &gt;();
<a name="l01317"></a>01317 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01318"></a>01318 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01319"></a>01319 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01320"></a>01320 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01321"></a>01321 }
<a name="l01322"></a>01322 {
<a name="l01323"></a>01323 <span class="keyword">typedef</span> <a class="code" href="a00213.html">mapped_vector_of_mapped_vector&lt;T&gt;</a> container_model;
<a name="l01324"></a>01324 function_requires&lt; Mutable_SparseMatrixConcept&lt;container_model&gt; &gt;();
<a name="l01325"></a>01325 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01326"></a>01326 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01327"></a>01327 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01328"></a>01328 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01329"></a>01329 }
<a name="l01330"></a>01330 {
<a name="l01331"></a>01331 <span class="keyword">typedef</span> <a class="code" href="a00054.html">compressed_matrix&lt;T&gt;</a> container_model;
<a name="l01332"></a>01332 function_requires&lt; Mutable_SparseMatrixConcept&lt;container_model&gt; &gt;();
<a name="l01333"></a>01333 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01334"></a>01334 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01335"></a>01335 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01336"></a>01336 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01337"></a>01337 }
<a name="l01338"></a>01338 {
<a name="l01339"></a>01339 <span class="keyword">typedef</span> <a class="code" href="a00073.html">coordinate_matrix&lt;T&gt;</a> container_model;
<a name="l01340"></a>01340 function_requires&lt; Mutable_SparseMatrixConcept&lt;container_model&gt; &gt;();
<a name="l01341"></a>01341 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01342"></a>01342 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01343"></a>01343 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01344"></a>01344 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01345"></a>01345 }
<a name="l01346"></a>01346 {
<a name="l01347"></a>01347 <span class="keyword">typedef</span> <a class="code" href="a00140.html">generalized_vector_of_vector&lt;T, row_major, vector&lt; coordinate_vector&lt;T&gt;</a> &gt; &gt; container_model;
<a name="l01348"></a>01348 function_requires&lt; Mutable_SparseMatrixConcept&lt;container_model&gt; &gt;();
<a name="l01349"></a>01349 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_iterator1, container_model::const_iterator2&gt; &gt;();
<a name="l01350"></a>01350 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::iterator1, container_model::iterator2&gt; &gt;();
<a name="l01351"></a>01351 function_requires&lt; IndexedBidirectional2DIteratorConcept&lt;container_model::const_reverse_iterator1, container_model::const_reverse_iterator2&gt; &gt;();
<a name="l01352"></a>01352 function_requires&lt; Mutable_IndexedBidirectional2DIteratorConcept&lt;container_model::reverse_iterator1, container_model::reverse_iterator2&gt; &gt;();
<a name="l01353"></a>01353 }
<a name="l01354"></a>01354
<a name="l01355"></a>01355 <span class="preprocessor">#endif</span>
<a name="l01356"></a>01356 <span class="preprocessor"></span>
<a name="l01357"></a>01357 <span class="comment">// Scalar Expressions</span>
<a name="l01358"></a>01358 <span class="preprocessor">#if defined (INTERNAL_EXPRESSION) || defined (INTERNAL_VECTOR_EXPRESSION)</span>
<a name="l01359"></a>01359 <span class="preprocessor"></span> function_requires&lt; ScalarExpressionConcept&lt;scalar_value&lt;T&gt; &gt; &gt;();
<a name="l01360"></a>01360 function_requires&lt; ScalarExpressionConcept&lt;scalar_reference&lt;T&gt; &gt; &gt;();
<a name="l01361"></a>01361
<a name="l01362"></a>01362 <span class="comment">// Vector Expressions</span>
<a name="l01363"></a>01363 {
<a name="l01364"></a>01364 <span class="keyword">typedef</span> <a class="code" href="a00531.html">vector_reference&lt;vector&lt;T&gt;</a> &gt; expression_model;
<a name="l01365"></a>01365 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01366"></a>01366 function_requires&lt; Mutable_VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01367"></a>01367 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01368"></a>01368 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;expression_model::iterator&gt; &gt;();
<a name="l01369"></a>01369 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01370"></a>01370 function_requires&lt; Mutable_IndexedRandomAccess1DIteratorConcept&lt;expression_model::reverse_iterator&gt; &gt;();
<a name="l01371"></a>01371 }
<a name="l01372"></a>01372
<a name="l01373"></a>01373 {
<a name="l01374"></a>01374 <span class="keyword">typedef</span> <a class="code" href="a00580.html">vector_unary&lt;vector&lt;T&gt;</a>, <a class="code" href="a00380.html">scalar_identity&lt;T&gt;</a> &gt; expression_model;
<a name="l01375"></a>01375 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01376"></a>01376 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01377"></a>01377 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01378"></a>01378 }
<a name="l01379"></a>01379
<a name="l01380"></a>01380 {
<a name="l01381"></a>01381 <span class="keyword">typedef</span> <a class="code" href="a00497.html">vector_binary&lt;vector&lt;T&gt;</a>, <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;T&gt;</a>, <a class="code" href="a00392.html">scalar_plus&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01382"></a>01382 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01383"></a>01383 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01384"></a>01384 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01385"></a>01385 }
<a name="l01386"></a>01386
<a name="l01387"></a>01387 {
<a name="l01388"></a>01388 <span class="keyword">typedef</span> <a class="code" href="a00499.html">vector_binary_scalar1&lt;T, vector&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01389"></a>01389 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01390"></a>01390 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01391"></a>01391 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01392"></a>01392 }
<a name="l01393"></a>01393
<a name="l01394"></a>01394 {
<a name="l01395"></a>01395 <span class="keyword">typedef</span> <a class="code" href="a00502.html">vector_binary_scalar2&lt;vector&lt;T&gt;</a>, <a class="code" href="a00403.html">scalar_value&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01396"></a>01396 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01397"></a>01397 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01398"></a>01398 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01399"></a>01399 }
<a name="l01400"></a>01400
<a name="l01401"></a>01401 {
<a name="l01402"></a>01402 <span class="keyword">typedef</span> <a class="code" href="a00499.html">vector_binary_scalar1&lt;scalar_value&lt;T&gt;</a>, <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01403"></a>01403 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01404"></a>01404 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01405"></a>01405 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01406"></a>01406 }
<a name="l01407"></a>01407
<a name="l01408"></a>01408 {
<a name="l01409"></a>01409 <span class="keyword">typedef</span> <a class="code" href="a00502.html">vector_binary_scalar2&lt;vector&lt;T&gt;</a>, <a class="code" href="a00403.html">scalar_value&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01410"></a>01410 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01411"></a>01411 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01412"></a>01412 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01413"></a>01413 }
<a name="l01414"></a>01414
<a name="l01415"></a>01415 function_requires&lt; ScalarExpressionConcept&lt;vector_scalar_unary&lt;vector&lt;T&gt;, <a class="code" href="a00543.html">vector_sum&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01416"></a>01416 function_requires&lt; ScalarExpressionConcept&lt;vector_scalar_unary&lt;vector&lt;T&gt;, <a class="code" href="a00520.html">vector_norm_1&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01417"></a>01417 function_requires&lt; ScalarExpressionConcept&lt;vector_scalar_unary&lt;vector&lt;T&gt;, <a class="code" href="a00521.html">vector_norm_2&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01418"></a>01418 function_requires&lt; ScalarExpressionConcept&lt;vector_scalar_unary&lt;vector&lt;T&gt;, <a class="code" href="a00522.html">vector_norm_inf&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01419"></a>01419
<a name="l01420"></a>01420 function_requires&lt; ScalarExpressionConcept&lt;vector_scalar_binary&lt;vector&lt;T&gt;, <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;T&gt;</a>, <a class="code" href="a00513.html">vector_inner_prod&lt;vector&lt;T&gt;</a>, vector&lt;T&gt;, T&gt; &gt; &gt; &gt;();
<a name="l01421"></a>01421 <span class="preprocessor">#endif</span>
<a name="l01422"></a>01422 <span class="preprocessor"></span>
<a name="l01423"></a>01423 <span class="comment">// Matrix Expressions</span>
<a name="l01424"></a>01424 <span class="preprocessor">#if defined (INTERNAL_EXPRESSION) || defined (INTERNAL_MATRIX_EXPRESSION)</span>
<a name="l01425"></a>01425 <span class="preprocessor"></span> {
<a name="l01426"></a>01426 <span class="keyword">typedef</span> <a class="code" href="a00275.html">matrix_reference&lt;matrix&lt;T&gt;</a> &gt; expression_model;
<a name="l01427"></a>01427 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01428"></a>01428 function_requires&lt; Mutable_MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01429"></a>01429 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01430"></a>01430 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;expression_model::iterator1, expression_model::iterator2&gt; &gt;();
<a name="l01431"></a>01431 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01432"></a>01432 function_requires&lt; Mutable_IndexedRandomAccess2DIteratorConcept&lt;expression_model::reverse_iterator1, expression_model::reverse_iterator2&gt; &gt;();
<a name="l01433"></a>01433 }
<a name="l01434"></a>01434
<a name="l01435"></a>01435 {
<a name="l01436"></a>01436 <span class="keyword">typedef</span> <a class="code" href="a00514.html">vector_matrix_binary&lt;vector&lt;T&gt;</a>, vector&lt;T&gt;, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01437"></a>01437 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01438"></a>01438 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01439"></a>01439 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01440"></a>01440 }
<a name="l01441"></a>01441
<a name="l01442"></a>01442 {
<a name="l01443"></a>01443 <span class="keyword">typedef</span> <a class="code" href="a00307.html">matrix_unary1&lt;matrix&lt;T&gt;</a>, <a class="code" href="a00380.html">scalar_identity&lt;T&gt;</a> &gt; expression_model;
<a name="l01444"></a>01444 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01445"></a>01445 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01446"></a>01446 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01447"></a>01447 }
<a name="l01448"></a>01448
<a name="l01449"></a>01449 {
<a name="l01450"></a>01450 <span class="keyword">typedef</span> <a class="code" href="a00311.html">matrix_unary2&lt;matrix&lt;T&gt;</a>, <a class="code" href="a00380.html">scalar_identity&lt;T&gt;</a> &gt; expression_model;
<a name="l01451"></a>01451 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01452"></a>01452 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01453"></a>01453 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01454"></a>01454 }
<a name="l01455"></a>01455
<a name="l01456"></a>01456 {
<a name="l01457"></a>01457 <span class="keyword">typedef</span> <a class="code" href="a00235.html">matrix_binary&lt;matrix&lt;T&gt;</a>, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;T&gt;</a>, <a class="code" href="a00392.html">scalar_plus&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01458"></a>01458 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01459"></a>01459 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01460"></a>01460 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01461"></a>01461 }
<a name="l01462"></a>01462
<a name="l01463"></a>01463 {
<a name="l01464"></a>01464 <span class="keyword">typedef</span> <a class="code" href="a00238.html">matrix_binary_scalar1&lt;T, matrix&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01465"></a>01465 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01466"></a>01466 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01467"></a>01467 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01468"></a>01468 }
<a name="l01469"></a>01469
<a name="l01470"></a>01470 {
<a name="l01471"></a>01471 <span class="keyword">typedef</span> <a class="code" href="a00242.html">matrix_binary_scalar2&lt;matrix&lt;T&gt;</a>, T, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01472"></a>01472 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01473"></a>01473 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01474"></a>01474 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01475"></a>01475 }
<a name="l01476"></a>01476
<a name="l01477"></a>01477 {
<a name="l01478"></a>01478 <span class="keyword">typedef</span> <a class="code" href="a00238.html">matrix_binary_scalar1&lt;scalar_value&lt;T&gt;</a>, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01479"></a>01479 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01480"></a>01480 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01481"></a>01481 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01482"></a>01482 }
<a name="l01483"></a>01483
<a name="l01484"></a>01484 {
<a name="l01485"></a>01485 <span class="keyword">typedef</span> <a class="code" href="a00242.html">matrix_binary_scalar2&lt;matrix&lt;T&gt;</a>, <a class="code" href="a00403.html">scalar_value&lt;T&gt;</a>, <a class="code" href="a00388.html">scalar_multiplies&lt;T, T&gt;</a> &gt; expression_model;
<a name="l01486"></a>01486 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01487"></a>01487 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01488"></a>01488 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01489"></a>01489 }
<a name="l01490"></a>01490
<a name="l01491"></a>01491 {
<a name="l01492"></a>01492 <span class="keyword">typedef</span> <a class="code" href="a00315.html">matrix_vector_binary1&lt;matrix&lt;T&gt;</a>, vector&lt;T&gt;, <a class="code" href="a00325.html">matrix_vector_prod1&lt;matrix&lt;T&gt;</a>, vector&lt;T&gt;, T&gt; &gt; expression_model;
<a name="l01493"></a>01493 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01494"></a>01494 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01495"></a>01495 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01496"></a>01496 }
<a name="l01497"></a>01497
<a name="l01498"></a>01498 {
<a name="l01499"></a>01499 <span class="keyword">typedef</span> <a class="code" href="a00318.html">matrix_vector_binary2&lt;vector&lt;T&gt;</a>, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;T&gt;</a>, <a class="code" href="a00326.html">matrix_vector_prod2&lt;matrix&lt;T&gt;</a>, vector&lt;T&gt;, T &gt; &gt; expression_model;
<a name="l01500"></a>01500 function_requires&lt; VectorExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01501"></a>01501 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_iterator&gt; &gt;();
<a name="l01502"></a>01502 function_requires&lt; IndexedRandomAccess1DIteratorConcept&lt;expression_model::const_reverse_iterator&gt; &gt;();
<a name="l01503"></a>01503 }
<a name="l01504"></a>01504
<a name="l01505"></a>01505 {
<a name="l01506"></a>01506 <span class="keyword">typedef</span> <a class="code" href="a00258.html">matrix_matrix_binary&lt;matrix&lt;T&gt;</a>, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;T&gt;</a>, <a class="code" href="a00263.html">matrix_matrix_prod&lt;matrix&lt;T&gt;</a>, matrix&lt;T&gt;, T &gt; &gt; expression_model;
<a name="l01507"></a>01507 function_requires&lt; MatrixExpressionConcept&lt;expression_model&gt; &gt;();
<a name="l01508"></a>01508 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_iterator1, expression_model::const_iterator2&gt; &gt;();
<a name="l01509"></a>01509 function_requires&lt; IndexedRandomAccess2DIteratorConcept&lt;expression_model::const_reverse_iterator1, expression_model::const_reverse_iterator2&gt; &gt;();
<a name="l01510"></a>01510 }
<a name="l01511"></a>01511
<a name="l01512"></a>01512 function_requires&lt; ScalarExpressionConcept&lt;matrix_scalar_unary&lt;matrix&lt;T&gt;, <a class="code" href="a00267.html">matrix_norm_1&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01513"></a>01513 function_requires&lt; ScalarExpressionConcept&lt;matrix_scalar_unary&lt;matrix&lt;T&gt;, <a class="code" href="a00268.html">matrix_norm_frobenius&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01514"></a>01514 function_requires&lt; ScalarExpressionConcept&lt;matrix_scalar_unary&lt;matrix&lt;T&gt;, <a class="code" href="a00269.html">matrix_norm_inf&lt;vector&lt;T&gt;</a> &gt; &gt; &gt; &gt;();
<a name="l01515"></a>01515 <span class="preprocessor">#endif</span>
<a name="l01516"></a>01516 <span class="preprocessor"></span>
<a name="l01517"></a>01517 <span class="preprocessor">#ifdef EXTERNAL</span>
<a name="l01518"></a>01518 <span class="preprocessor"></span> function_requires&lt; AdditiveAbelianGroupConcept&lt;float&gt; &gt;();
<a name="l01519"></a>01519 function_requires&lt; CommutativeRingWithIdentityConcept&lt;float&gt; &gt;();
<a name="l01520"></a>01520 function_requires&lt; FieldConcept&lt;float&gt; &gt;();
<a name="l01521"></a>01521 function_requires&lt; VectorSpaceConcept&lt;float, vector&lt;float&gt; &gt; &gt;();
<a name="l01522"></a>01522 function_requires&lt; Prod_RingWithIdentityConcept&lt;matrix&lt;float&gt; &gt; &gt;();
<a name="l01523"></a>01523 function_requires&lt; VectorSpaceConcept&lt;float, matrix&lt;float&gt; &gt; &gt;();
<a name="l01524"></a>01524 function_requires&lt; LinearOperatorConcept&lt;float, vector&lt;float&gt;, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;float&gt;</a> &gt; &gt;();
<a name="l01525"></a>01525
<a name="l01526"></a>01526 function_requires&lt; AdditiveAbelianGroupConcept&lt;std::complex&lt;float&gt; &gt; &gt;();
<a name="l01527"></a>01527 function_requires&lt; CommutativeRingWithIdentityConcept&lt;std::complex&lt;float&gt; &gt; &gt;();
<a name="l01528"></a>01528 function_requires&lt; FieldConcept&lt;std::complex&lt;float&gt; &gt; &gt;();
<a name="l01529"></a>01529 function_requires&lt; VectorSpaceConcept&lt;std::complex&lt;float&gt;, <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;std::complex&lt;float&gt;</a> &gt; &gt; &gt;();
<a name="l01530"></a>01530 function_requires&lt; Prod_RingWithIdentityConcept&lt;matrix&lt;std::complex&lt;float&gt; &gt; &gt; &gt;();
<a name="l01531"></a>01531 function_requires&lt; VectorSpaceConcept&lt;std::complex&lt;float&gt;, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;float&gt;</a> &gt; &gt; &gt;();
<a name="l01532"></a>01532 function_requires&lt; LinearOperatorConcept&lt;std::complex&lt;float&gt;, <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;std::complex&lt;float&gt;</a> &gt;, <a class="code" href="a00218.html" title="A dense matrix of values of type T.">matrix&lt;std::complex&lt;float&gt;</a> &gt; &gt; &gt;();
<a name="l01533"></a>01533 <span class="preprocessor">#endif</span>
<a name="l01534"></a>01534 <span class="preprocessor"></span> }
<a name="l01535"></a>01535
<a name="l01536"></a>01536 } <span class="comment">// end of anonymous namespace</span>
<a name="l01537"></a>01537
<a name="l01538"></a>01538 }}}
<a name="l01539"></a>01539
<a name="l01540"></a>01540 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00602.html">concepts.hpp</a> </li>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<small>
<small>
<small>
<table width="100%">
<tr>
<td align="right">
Copyright &#169; 2010-2011 David Bellot - Distributed under the <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">Boost Software License, Version 1.0.</a>
</td>
</tr>
</table>
</small>
</small>
</small>