Объявление массива и инициализация в C ++ 11

Вот 8 способов объявить и инициализировать массивы в C ++ 11, которые в порядке подg++:

/*0*/ std::array<int, 3> arr0({1, 2, 3});
/*1*/ std::array<int, 3> arr1({{1, 2, 3}});
/*2*/ std::array<int, 3> arr2{1, 2, 3};
/*3*/ std::array<int, 3> arr3{{1, 2, 3}};
/*4*/ std::array<int, 3> arr4 = {1, 2, 3};
/*5*/ std::array<int, 3> arr5 = {{1, 2, 3}};
/*6*/ std::array<int, 3> arr6 = std::array<int, 3>({1, 2, 3});
/*7*/ std::array<int, 3> arr7 = std::array<int, 3>({{1, 2, 3}});

Каковы правильные в соответствии со строгим стандартом (и предстоящим стандартом C ++ 14)? Каковы наиболее распространенные / используемые и которых следует избегать (и по какой причине)?

Ответы на вопрос(4)

Ваш ответ на вопрос