examples - c++ reference array



Inicialización std:: array<T> (1)

El beneficio es que tienes ... menos para escribir. Pero el inconveniente es que solo puede dejar llaves cuando la declaración tiene esa forma. Si deja el valor = , o si el conjunto es miembro y lo inicializa con el member{{1, 2, 3, 4, 5}} , no solo puede aprobar un par de llaves.

Esto se debe a que existían preocupaciones de posibles ambigüedades de sobrecarga cuando las llaves se pasan a las funciones, como en f({{1, 2, 3, 4, 5}}) . Pero causó cierta discusión y se generó un informe de problema.

Esencialmente, la inicialización = { ... } siempre ha podido omitir llaves, como en

int a[][2] = { 1, 2, 3, 4 };

Eso no es nuevo. Lo nuevo es que puede omitir el = , pero luego debe especificar todos los paréntesis

int a[][2]{ {1, 2}, {3, 4} };

https://src-bin.com

Una std::array<T> es esencialmente una matriz estilo C envuelta en una struct . La inicialización de struct s requiere llaves, y la inicialización de matrices también requiere llaves. Entonces necesito dos pares de llaves:

std::array<int, 5> a = {{1, 2, 3, 4, 5}};

Pero la mayor parte del código de ejemplo que he visto solo usa un par de llaves:

std::array<int, 5> b = {1, 2, 3, 4, 5};

¿Cómo es que esto está permitido y tiene algún beneficio o desventaja en comparación con el primer enfoque?





curly-braces