2016-08-31 4 views
4

Можно ли определить (или адаптировать) структуру Boost Fusion, которая содержит элементы Boost Fusion structs в одном выражении?Вложенные Boost Fusion Structs

Например, как можно адаптировать или определить что-то эквивалентное этому:

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

Где и Outer и Outer::Nested являются reflectable типы.

Определение всех внутренних типов в порядке наименьшего изящества является очень грязным и выводит внутренние типы извне.

+0

пример того, что вы хотите? (даже если код psuedo?) –

+1

Является ли [это] (http://melpon.org/wandbox/permlink/kfcBTaL8ZuyzxBtr) что-то, что вас интересует? (Если бы я мог написать ответ завтра). Я знаю, что было бы лучше использовать BOOST_FUSION_DEFINE_STRUCT, но я не вижу способа добиться желаемого результата. – llonesmiz

+1

@jv_: это будет немного лучше, чем чистое решение слияния, но я бы предпочел бы одну точку определения, как в BOOST_FUSION_DEFINE_STRUCT. Написание вашего предложения в качестве ответа может помочь будущим плакатам. –

ответ

3

Вы должны быть в состоянии «определить» внутреннюю-структуру, используя его полное имя:

BOOST_FUSION_ADAPT_STRUCT(
    Outer::Nested, 
    a 
) 

BOOST_FUSION_ADAPT_STRUCT(
    Outer, 
    i, 
    j, 
    nested 
) 
+0

ОК, так что это адаптация структуры наизнанку или, более конкретно, адаптация внутреннего класса отдельно от класса out. Есть ли способ сделать это с помощью 'BOOST_FUSION_DEFINE_STRUCT' и в одном определении? –

+0

_That_'s, что вы имеете в виду :) – xtofl

+0

Ну, это достигает правильных типов, но это не одно утверждение, синтаксически похожее на определение структуры. –