2016-04-10 4 views
4

Ich möchte diese beiden Sequenzen von gleicher Größe miteinander zuordnen. Allerdings kann ich nicht scheinen zu verstehen, wie das bekommen mit den hana::map Features:Boost Hana Zip zwei Sequenzen in Karte

static constexpr auto type_idx_map_c = hana::unpack(
    hana::zip_with(hana::make_pair, type_tuple_c, idx_tuple_c) 
    , hana::make_map 
); 

Egal, welche Transformationen ich mache, kann ich nicht scheinen, um die Zuordnung zu erstellen. Ich verstehe, dass eine Karte erfordert, dass ihre Elemente dem Produkt-Konzept entsprechen, aber ich kann dieses Verhalten in Bezug auf gezippte Strukturen nicht verstehen (oder überhaupt verstehen).

Gibt es etwas, was ich tun kann, oder irgendetwas, was ich falsch mache?

Lauf gcc version 6.0.0 20160320 und hana version 0.7.0 zuletzt geholt heute

Antwort

5

Ich möchte diese beiden Sequenzen gleicher Größe miteinander kartieren.

Diese Sequenzen sind normalerweise nicht gleich groß. type_tuple_c hat Größe sizeof...(T), aber idx_tuple_c hat Größe 2 - es enthält nur die Elemente hana::size_c<0> und hana::size_c<sizeof...(T)>.

Ich denke, was Sie suchen, soweit Indizes gehen, ist nur std::make_index_sequence<sizeof...(T)>{}. Das sollte noch gut mit Boost.Hana spielen.

+1

Ahh das macht so viel Sinn ... und erklärt, warum einer meiner Testfälle bestanden hat. Vielen Dank! Außerdem habe ich 'hana :: to (hana :: range_c )' für interessierte gewählt. –