Zawijanie sekwencji Boost.Fusion

Szukam sposobu na stworzenieBoost.Fusion owijarka sekwencji, która sama jestPołączenie sekwencja i przekazuje wszystkie „połączenia” do zapakowanej sekwencji. Coś w linii

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

    Sequence seq;
};

gdziesequence_wrapper< Sequence > jestPołączenie sekwencja i działa tak samoSequence by. Powodem tego jest to, że mam kilka funkcji, które działająPołączenie sekwencje (gdzie wszystkie elementy spełniają pewne specjalne wymagania) i chciałbym dodać trochę cukru składniowego, dla którego potrzebuję niestandardowego typu, aby dodać przeciążone operatory. Nie potrzebuję wyniku operacji na sekwencjaprzypadku, aby zwrócić także sekwencję_wrapera, tylko wywołania związane z cukrem składni zwrócą (ręcznie) zawiniętą sekwencję. Na przykład dołączanie elementów do sekwencji za pomocą operatora przecinka (nieco a.)Przyspieszenie dlaPołączenie sekwencje):

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 ) )
        ;
}

Jaki byłby najlepszy sposób, aby to osiągnąć (jeśli rzeczywiście jest obsługiwany przez bibliotekę)? Szczególnie staram się unikać tworzeniaPołączenie sekwencja od podstaw, ponieważ chciałbym użyć dowolnej sekwencji, którą zwróciPołączenie operacje. Czy dziedziczenie + specjalizacjatag_of aby przywrócić tag zawiniętej sekwencji po prostu działa? Czy będę musiał zdefiniować własny tag i wdrożyć wszystkie wymagane funkcje, aby przekazać połączenie?

questionAnswers(1)

yourAnswerToTheQuestion