title: CComVariant vs. _variant_t, CComBSTR vs. _bstr_t
body: <p>I am using ATL (VS2008, so ATL9 IIRC) to create COM objects and have been using the <code>CComVariant</code> class (defined in <code>atlcomcli.h</code>) to manage <code>VARIANT</code> types.  However, there is also another <code>VARIANT</code> wrapper called <code>_variant_t</code>.  Is there any difference between <code>CComVariant</code> and <code>_variant_t</code> and which one should I be using?</p>
  
  <p>Similarly, there are two <code>BSTR</code> wrappers available - <code>CComBSTR</code> and <code>_bstr_t</code>.  Again, which should I prefer and why?</p>