嵌套Boost Fusion结构

时间:2016-08-31 11:40:12

标签: c++ boost-fusion

是否可以在单个语句中定义(或调整)包含成员Boost Fusion结构的Boost Fusion结构?

例如,我如何调整或定义与此相当的东西:

 public class PersistenceUtil {

        private static EntityManagerFactory entityManagerFactory;

        static {
            entityManagerFactory = Persistence.createEntityManagerFactory("testdb");
        }

        public static EntityManager getEntityManager() {
            final EntityManager entityManager = entityManagerFactory.createEntityManager();
            return entityManager;
        }

    public static void closeEntityManagerFactory() {
           entityManagerFactory.close();
        }
    }




public class TestClass {
    public static void main(String[] args) {
        final EntityManager em = PersistenceUtil.getEntityManager();
        final EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        final TestTable testTable = new TestTable();
        testTable.setData("Sample Data");
        em.merge(testTable);
        transaction.commit();
        em.close():
        PersistenceUtil.closeEntityManagerFactory()

    }
}

struct Outer { int i; float j; struct Nested { int a; } nested; }; Outer都是可反映的类型。

以内到外的顺序定义所有内部类型非常混乱,并在外部公开内部类型。

1 个答案:

答案 0 :(得分:3)

你应该能够定义'内部结构使用其完全限定名称:

BOOST_FUSION_ADAPT_STRUCT(
  Outer::Nested,
  a
)

BOOST_FUSION_ADAPT_STRUCT(
  Outer,
  i,
  j,
  nested
)