En C , il existe deux manières courantes de créer un std::array à l'aide de l'initialisation lists :
<code class="cpp">std::array<std::string, 2> strings = { "a", "b" }; std::array<std::string, 2> strings({ "a", "b" });</code>
Cependant, si vous rencontrez une erreur de compilation concernant "l'expression primaire attendue avant le jeton ','" avec GCC 4.6.1, cela est dû à une légère particularité dans std::array.
Contrairement à std::vector, qui a un constructeur qui prend explicitement une liste d'initialiseurs, std::array est défini comme une struct:
<code class="cpp">template<typename T, int size> struct std::array { T a[size]; };</code>
En tant que tel, il n'a pas de constructeur qui accepte directement une liste d’initialiseurs. Au lieu de cela, il peut être initialisé à l'aide de l'initialisation globale.
Pour agréger correctement l'initialisation d'un tableau à l'intérieur de la structure std::array, un jeu supplémentaire d'accolades est requis :
<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>
Il est il convient de noter que la norme C suggère que les accolades supplémentaires devraient être facultatives dans ce scénario. Par conséquent, l'erreur de compilation que vous avez rencontrée avec GCC 4.6.1 est probablement un bug du compilateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!