title: Introspecting a struct definition with boost.hana
body: <p>Migrating from MPL and Fusion to Hana here!</p>
  
  <p>So assume we have the usual</p>
  
  <pre><code>struct Person {
    BOOST_HANA_DEFINE_STRUCT(Person,
      (std::string, name),
      (int, age)
    );
  };
  </code></pre>
  
  <p>The documentation gives an example of introspecting an <em>object</em> of this struct, along the lines of</p>
  
  <pre><code>Person john;
  static_assert(hana::keys(john) == hana::make_tuple("name"_s, "age"_s));
  </code></pre>
  
  <p>But is it possible to introspect the struct itself, namely, getting the list of fields and their types and names?</p>
  
  <p>Of course, I could impose an additional requirement on the types I'm working with to be default-constructible and just create a dummy object to introspect, but that just seems wrong.</p>