title: how to get the i-th underlying type (by an const integer) of af boost::variant
body: <p>I would like to get the underlying type of a variant. For example"something similar to this:</p>
  
  <pre><code>typedef boost::variant&lt; shared_ptr&lt;int&gt; , shared_ptr&lt;float&gt; &gt; VType;
  
  typedef VType::get&lt;0&gt;::type  TYPE1;       // TYPE1 = shared_ptr&lt;int&gt; 
  
  TYPE1 value = new std::remove_pointer&lt;TYPE1&gt;::type()    // make a new  shared_ptr&lt;int&gt;
  </code></pre>
  
  <p>Any ideas how to achieve this with boost?</p>