Wenn ich eine std :: Array initialisieren, gibt mir der Compiler eine Warnung über fehlende KlammernC++ 11: Richtige std :: Array-Initialisierung? wie folgt
std::array<int, 4> a = {1, 2, 3, 4};
Dies behebt das Problem:
std::array<int, 4> a = {{1, 2, 3, 4}};
Dies ist die Warnmeldung:
missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]
ist das nur ein Fehler in meiner Version von gcc, oder wird es absichtlich getan? Wenn ja warum?
'std :: array' ist ein Aggregat. Ich denke, dass sie es in der Zukunft mit einem Set arbeiten lassen könnten. – chris
@chris Was genau meinst du damit? – CaffeineAddict
Nun, du weißt wie du 'struct S {int i; int j;}; 'und initialisiere es mit' S s = {5, 6}; '? Das ist die Aggregat-Initialisierung. 'std :: array' enthält ein eingebautes Array, das über eine Initialisiererliste initialisiert werden kann, was die innere Menge ist. Der äußere Satz dient zur Aggregat-Initialisierung. – chris