Die folgenden Werke:Ist es möglich, ein std :: Array von unbenannten Strukturen zu initialisieren?
struct
{
int v;
} vals[] = { {1}, {2} };
Kann ich das gleiche tun, sondern eine std::array
initialisieren?
bearbeiten, da so viele Leute fragen, ‚warum‘
Es gibt einige sehr offensichtliche Abhilfen (in den Kommentaren aufgeführt), aber ich möchte nur einmal die Art verwenden, so dass ich nicht wirklich wollen Es wurde meinem aktuellen Namensraum hinzugefügt. Ich könnte ein Tupel oder etwas Ähnliches verwenden, aber die genannten Werte verbessern die Übersichtlichkeit. Ich brauche den C-Array-Wert nicht, wenn ich eine konstruiere, also kann ich declltype nicht verwenden.
Die sauberste Lösung, die ich tun möchte, ist:
struct
{
int v;
} std::array vals = { {1}, {2} };
Es ist ein Element von akademischem Interesse als auch - „ist dies möglich, in irgendeiner Weise, die ich nicht hatte obwohl?“. Scheint, wie nicht, ich werde so wahrscheinlich verwenden:
struct
{
int v;
} c_array[] = {};
std::array<std::remove_reference_t<decltype(c_array[0])>, 2> arr = { {1}, {2} };
Haben Sie versucht, 'array'? –
@MatsPetersson Das wird nicht funktionieren. –
'struct {int v; } foo; std :: array bar = {{{1}, {2}}}; '? Aber ... warum musst du das tun? –