title: How to boost::fusion::for_each to add type to create an mpl::vector of types?
body: <p>I'd like to iterate through the member of any fusion struct, add its member's type to a boost::mpl::vector (or set) to create a boost::variant of those types.  Any help is appreciated.  </p>
  
  <pre><code>struct A
  {
      int a1;
      double a2;
      float a3;
  };
  
  BOOST_FUSION_ADAPT_STRUCT(
      A,
      (int,a1)
      (double,a2)
      (float,a3)
  )
  
  struct StructTypes
  {
      template &lt;typename T&gt;
      void operator()( T&amp; t ) const 
      {
          // how do I append to a list of types here?
      }
  };
  
  int main()
  {
      A a;
      boost::fusion::for_each( a, StructTypes() );
  }
  </code></pre>