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

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

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

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

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

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