A std::array<T>
es esencialmente una matriz de estilo C envuelta en struct
. La inicialización de struct
s requiere llaves, y la inicialización de matrices también requiere llaves. Así que necesito dos pares de llaves:std :: array <T> inicialización
std::array<int, 5> a = {{1, 2, 3, 4, 5}};
Pero la mayor parte del código de ejemplo que he visto sólo utiliza un par de llaves:
std::array<int, 5> b = {1, 2, 3, 4, 5};
¿Cómo es que esto está permitido, y tampoco tiene las ventajas o inconvenientes en comparación con el primer approch?
No estoy seguro de que _es_ permitido por la norma - posiblemente los compiladores que aceptan que el código se basan en una anterior C++ 11 borrador, o simplemente dar una advertencia ya que es una extensión que permite código mal formado. – ildjarn
@ildjarn Según Johannes, está permitido. – fredoverflow