Ich suche nach einer Möglichkeit, zwei Tupel zu vergleichen, um festzustellen, ob sie die gleichen Typen enthalten.
Die Reihenfolge der Typen spielt keine Rolle. Solange es eine Eins-zu-Eins-Zuordnung zwischen den Typen der beiden Tupel gibt, werde ich sie als äquivalent betrachten.
Hier ist ein kleiner Test, den ich eingerichtet habe.
Ich habe Probleme bei der Implementierung von equivalent_types()
:
Mit Hana (in Verbindung mit aktuellen Boost-Versionen) können wir jeden Tupel-Typ in eine Karte von Typ zu Häufigkeit konvertieren und dann diese Karten auf Gleichheit vergleichen:
%Vor%Beispiel .
Beachten Sie, dass &e
als Argument für hana::decltype_
erforderlich ist, um sicherzustellen, dass z. int
und int&
werden als unterschiedliche Typen behandelt (dito mit Übergabe von e
durch universelle Referenz).
Dieser Code scheint mit den Parametern in beliebiger Reihenfolge zu funktionieren. Das false
-Ergebnis ist ein Compilerfehler. Ich bin noch nicht großartig mit TMP, aber es ist 100% Kompilierzeit .. Ich würde gerne einige Vorschläge, wie man das aufräumen. Live: Ссылка
Tags und Links c++ comparison c++14 tuples stdtuple