Wickeln einer Boost.Fusion-Sequenz

Ich suche nach einem Weg, um eineBoost.Fusion Sequenz-Wrapper, der selbst einVerschmelzung Sequenz und leitet alle "Anrufe" an die umschlossene Sequenz weiter. Etwas in den Zeilen von

template< typename Sequence >
struct sequence_wrapper
{
    explicit sequence_wrapper( Sequence const& s ) : seq( s ){}

    Sequence seq;
};

wohersequence_wrapper< Sequence > ist einVerschmelzung Sequenz als auch und funktioniert genausoSequence würde. Der Grund, warum ich das brauche, ist, dass ich mehrere Funktionen habe, die ausgeführt werdenVerschmelzung Sequenzen (bei denen alle Elemente einige spezielle Anforderungen erfüllen), und ich möchte etwas Syntaxzucker hinzufügen, für den ich einen benutzerdefinierten Typ benötige, um überladene Operatoren hinzuzufügen. Ich brauche das Ergebnis von Operationen auf einem sequence_wrapper nicht, um auch einen sequence_wrapper zurückzugeben, nur die syntaktisch zuckerbezogenen Aufrufe würden eine (manuell) umbrochene Sequenz zurückgeben. Anhängen von Elementen an eine Sequenz mit dem Kommaoperator (in etwa aBoost.Assign zumVerschmelzung Sequenzen):

template< typename Sequence, typename T >
sequence_wrapper<
    typename boost::fusion::result_of::push_back<
        Sequence const&
      , T
    >::type
> operator ,( Sequence const& seq, T const& v )
{
    return
        sequence_wrapper<
            typename boost::fusion::result_of::push_back<
                Sequence const&
              , T
            >::type
        >( boost::fusion::push_back( seq, v ) )
        ;
}

Was wäre der beste Weg, um dies zu erreichen (wenn es tatsächlich von der Bibliothek unterstützt wird)? Ich versuche besonders zu vermeiden, eineVerschmelzung Sequenz von Grund auf neu, da ich jede Sequenz verwenden möchte, die von zurückgegeben wirdVerschmelzung Operationen. Wäre Vererbung + Spezialisierung vontag_of funktioniert es gerade, das Tag der umbrochenen Sequenz zurückzugeben? Oder muss ich ein eigenes Tag definieren und alle erforderlichen Funktionen implementieren, um den Anruf einfach weiterzuleiten?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage