中括弧で囲まれたイニシャライザの代わりにstd::initializer_list
オブジェクトを使用して配列を初期化できますか? http://en.cppreference.com/w/cpp/language/aggregate_initialization中括弧で囲まれたイニシャライザの代わりにstd :: initializer_listを使って配列を初期化できますか?
unsigned char b[5]{"abc"};
// equivalent to unsigned char b[5] = {'a', 'b', 'c', '\0', '\0'};
int ar[] = {1,2,3};
std::array<int, 3> std_ar2{ {1,2,3} }; // std::array is an aggregate
std::array<int, 3> std_ar1 = {1, 2, 3};
しかし、私はstd::initializer_list il;
で配列を初期化することはできません:
、我々はこれを行うことができます
#include <iostream>
#include <initializer_list>
#include <array>
int main() {
int arr1[] = { 1, 2, 3 }; // OK
std::array<int, 3> arr2 = { 1, 2, 3 }; // OK
std::initializer_list<int> il = { 1, 2, 3 };
constexpr std::initializer_list<int> il_constexpr = { 1, 2, 3 };
//int arr3[] = il; // error
//int arr4[] = il_constexpr; // error
//std::array<int, 3> arr5 = il; // error
//std::array<int, 3> arr6 = il_constexpr; // error
return 0;
}
をしかし、どのように私はにstd::initializer_list il;
を使用することができます配列を初期化しますか?
Repoened .. "duped"はメンバー配列の初期化に関する一般的な質問でした。これは、 'std :: initializer_lists'を使って' std :: '型を初期化することを要求します(変更は許可されていません!)。彼らは大きく異なる質問です。 –
@Alex 'algorithm'([example](https://godbolt.org/g/cKiBNg))から' copy'を使用できませんか? – skypjack