2016-08-31 1 views
4

Ist es möglich, eine Boost Fusion-Struktur zu definieren (oder anzupassen), die Member-Boost-Fusion-Strukturen in einer einzigen Anweisung enthält?Verschachtelte Boost-Fusionsstrukturen

Zum Beispiel, wie kann ich etwas Gleichwertiges zu diesen anzupassen oder zu definieren:

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

Wo beide Outer und Outer::Nested sind reflektierbaren Typen.

Das Definieren aller internen Typen in umgekehrter Reihenfolge ist sehr unordentlich und stellt interne Typen extern bereit.

+0

Beispiel dafür, was Sie wollen? (auch wenn psuedo code?) –

+1

Ist [diese] (http://melpon.org/wandbox/permlink/kfcBTaL8ZuyzxBtr) etwas, woran Sie interessiert wären? (Wenn es ist, könnte ich morgen eine Antwort schreiben). Ich weiß, es wäre besser, BOOST_FUSION_DEFINE_STRUCT zu verwenden, aber ich sehe keinen Weg, das gewünschte Ergebnis zu erzielen. – llonesmiz

+1

@jv_: das wäre etwas besser als die reine Fusion-Lösung, aber ich hätte wirklich einen einzelnen Definitionspunkt als mit BOOST_FUSION_DEFINE_STRUCT bevorzugt. Wenn du deinen Vorschlag als Antwort schreibst, könnte das auch zukünftigen Postern helfen. –

Antwort

3

sollten Sie in der Lage sein, um die innere Struktur mit ihren vollständig qualifizierten Namen zu ‚definieren‘:

BOOST_FUSION_ADAPT_STRUCT(
    Outer::Nested, 
    a 
) 

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

OK, also passt dies die Struktur an, oder genauer, passt die innere Klasse getrennt von der out-Klasse an. Gibt es eine Möglichkeit, es mit 'BOOST_FUSION_DEFINE_STRUCT' und in einer einzigen Definition zu tun? –

+0

_Das ist was du meinst :) – xtofl

+0

Nun, dies erreicht die richtigen Typen, aber es ist keine einzelne Anweisung, die der Strukturdefinition syntaktisch ähnlich sieht. –

Verwandte Themen