re>template &lt;typename T&gt; 
struct remove_bounds
{ typedef T type; };

template &lt;typename T, std::size_t N&gt; 
struct remove_bounds&lt;T[N]&gt;
{ typedef T type; };</pre>

<p>The aim of remove_bounds is this: imagine a generic algorithm
that is passed an array type as a template parameter, <font
size="2" face="Courier New">remove_bounds</font> provides a means
of determining the underlying type of the array. For example <code>remove_bounds&lt;int[4][5]&gt;::type</code>
would evaluate to the type <co