嵌套 Boost Fusion 结构体

4

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

例如,如何适应或定义等效于以下内容:

struct Outer
{
   int i;
   float j;
   struct Nested
   { 
      int a;
   } nested;
};

OuterOuter::Nested均为可反映类型时。

按照从内到外的顺序定义所有内部类型非常混乱,并使内部类型外部暴露。


你想要一个示例吗?(即使是伪代码?) - Richard Hodges
1
这个对你有兴趣吗?(如果是,我明天可以写一个答案)。我知道使用BOOST_FUSION_DEFINE_STRUCT会更好,但我看不到实现所需结果的方法。 - llonesmiz
1
@jv_:这比纯融合解决方案稍微好一些,但我真的更喜欢像BOOST_FUSION_DEFINE_STRUCT那样有一个单一的定义点。将您的建议写成答案也可能有助于未来的帖子。 - Adi Shavit
1个回答

3
您应该能够使用其完全限定名称“定义”内部结构体:
BOOST_FUSION_ADAPT_STRUCT(
  Outer::Nested,
  a
)

BOOST_FUSION_ADAPT_STRUCT(
  Outer,
  i,
  j,
  nested
)

好的,所以这是从内部适应结构,更具体地说,是将内部类与外部类分别适应。是否有一种方法可以使用BOOST_FUSION_DEFINE_STRUCT并在单个定义中完成? - Adi Shavit
这就是你的意思 :) - xtofl
这样做可以实现正确的类型,但它不是一个单语句,语法上看起来类似于结构体定义。 - Adi Shavit
请注意,为了与问题的代码匹配,此答案中的一个字段应为j而不是f(无法编辑帖子,因为差异太小) - Yoav Feuerstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接