title: what does (template) rebind<> do?
body: <p>trying to learn more about how the standard library is actually implemented I'm inspecting all containers in visual studio.. Here I see some curious structure:</p>
  
  <p>In some base class of a <code>std::list&lt;&gt;</code> The following typedef is found</p>
  
  <pre><code>typedef typename _Alloc::template rebind&lt;_Ty&gt;::other _Alty;
  </code></pre>
  
  <p>Where "_Alloc" corresponds with the allocator template argument (and _Ty the contained type). I have trouble finding a good explanation of this "keyword". Best thing I've found so far is that it is part of the allocator interface. Though even <a href="http://en.cppreference.com/w/cpp/concept/Allocator" rel="noreferrer">cppreference</a> isn't very good in explaining this.</p>
  
  <p>What does this <code>template rebind&lt;&gt;</code> do? And why is it necessary at that location?</p>