2
ので、私はこれを行うことができます:initializer_listから配列をインスタンス化できますか?
#include <iostream>
#include <vector>
main(){
auto init = {1,2,3};
std::vector<int> v(init);
}
を、私はこれを行うことができます:
#include <iostream>
#include <vector>
main(){
auto init = {1,2,3};
int i[3] = init;
}
:
#include <iostream>
#include <vector>
main(){
int i[3] = {1,2,3};
}
は、なぜ私はこれを行うことはできませんか?
コンパイラは私にこのことを伝えます:
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
私はstd::initializer_list<int>
の代わりauto
でinit
を作成した場合、それは違いはありません。
hereと混乱することがあります。
aahなので、 '{1,2,3}'は実際には 'std :: initializer_list'ではなく* braced-init-list *であり、' std :: initializer_listそれから。 * braced-init-list *のインスタンスを作成できますか? – will
@willいいえ、あなたは* braced-init-listであるオブジェクトを持つことはできません*それらは事を初期化するためにのみ使用できます。 – NathanOliver
@ここには関連性があります。https://stackoverflow.com/questions/37682392/what-is-a-curly-brace-enclosed-list-if-not-an-intializer-list – NathanOliver