So kann ich dies tun:Kann ich ein Array von einer initializer_list instanziieren?
#include <iostream>
#include <vector>
main(){
auto init = {1,2,3};
std::vector<int> v(init);
}
und ich kann dies tun:
#include <iostream>
#include <vector>
main(){
int i[3] = {1,2,3};
}
Warum kann ich das nicht tun:
#include <iostream>
#include <vector>
main(){
auto init = {1,2,3};
int i[3] = init;
}
?
der Compiler sagt mir dies:
main.cpp: In function 'int main()':
main.cpp:10:16: error: array must be initialized with a brace-enclosed
initializer
int i[3] = init;
^~~~
exit status 1
es keinen Unterschied machen, wenn ich init
mit std::initializer_list<int>
statt auto
erstellen.
Sie können damit herumspielen here.
aah, so '{1,2,3}' ist eigentlich keine 'std :: initializer_list', sondern eine * braced-init-list *, und es gibt einen Konstruktor, der mir eine' std :: initializer_list gibt 'davon. Kann ich eine Instanz einer * braced-init-list * erstellen? – will
@will Nein, Sie können kein Objekt haben, das eine * braced-init-Liste ist * Sie können nur verwendet werden, um Dinge zu initialisieren. – NathanOliver
@will hier ist eine gute verwandte lesen: https://stackoverflow.com/questions/37682392/what-is-acurly-brace-enclosed-list-if-not-an-intializer-list – NathanOliver