Ich hätte gerne ein Tupel, das ein Array-Element als Mitglied hat. Insbesondere möchte ich, dass dieses Array-Element 2D ist - also muss jede Antwort für mehr als 1D funktionieren. Was ich im Idealfall möchte, ist etwas, das ich mit Initialisierungslisten initialisieren kann, z. std::tuple<ARRAY_TYPE, ...>({{0, 1}, {2, 3}}, ...)
.Was ist ein einzeiliger Ausdruck für die Konstruktion eines C++ - Tupels mit einem Array-Element (C oder std :: array)?
Es scheint, als ob solch ein Tupel sehr schwer zu konstruieren ist, was eine manuelle Initialisierung erfordert (d. H. Für Schleifen und dergleichen). Hier ist, was ich versucht habe:
std::tuple<int[M][N], ...>
- dies funktioniert nicht wegen der Einschränkungen von C-artigen Arrays. Das Tupel selbst ist ein gültiger Typ, aber die Initialisierung muss manuell durchgeführt werden (nicht am Aufbau).
std::tuple<std::array<std::array<int, M>, N>, ...>
- Ich dachte, das würde funktionieren, aber aus irgendeinem Grund schlägt etwas wie std::tuple<std::array<std::array<int, 2>, 2>, ...>({{0, 1}, {2, 3}}, ...)
mit einem "no matching constructor error" fehl. Es funktioniert jedoch in 1D.
std::tuple<std::vector<std::vector<int>>, ...>({{0, 1}, {2, 3}}, ...)
tatsächlich tut Arbeit, aber Vektoren scheinen, wie viel des Guten hier
Alle Gedanken, SO? Gibt es eine Möglichkeit, die C-artigen Arrays zum Funktionieren zu bringen? Das wäre ideal.
[This] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387) kann relevant sein und wird anscheinend in C++ 17 erwartet. – Quentin