Use boost::fusion to iterate over types