Sagt der C++ - Standard, dass std::initializer_list<T>
eine Referenz auf ein lokales anonymes Array ist? Wenn es heißt, dann sollten wir niemals ein solches Objekt zurückgeben. Jeder Abschnitt im Standard sagt das?C++ 11: speichert std :: initializer_list anonymes Array? Ist es veränderbar?
Eine andere Frage, sind die zugrunde liegenden Objekte einer std::initializer_list<T>
veränderbar? Ich habe versucht, es zu ändern:
#include <initializer_list>
int main()
{
auto a1={1,2,3};
auto a2=a1;//copy or reference?
for(auto& e:a1)
++e;//error
for(auto& e:a2)
cout<<e;
return 0;
}
Aber mit Fehler kompiliert: Fehler: Zuwachs von Nur-Lese-Referenz ‚e‘
Wie kann ich es beheben, wenn ich den Wert innerhalb des initializer_list ändern möchten?
'initializer_list' ist unveränderlich. –