Dalam C , terdapat dua cara biasa untuk mencipta std::array menggunakan pengamulaan lists:
<code class="cpp">std::array<std::string, 2> strings = { "a", "b" }; std::array<std::string, 2> strings({ "a", "b" });</code>
Walau bagaimanapun, jika anda menghadapi ralat kompilasi tentang "ungkapan utama yang dijangkakan sebelum token ','" dengan GCC 4.6.1, ia disebabkan oleh sedikit keanehan dalam std::array.
Tidak seperti std::vector, yang mempunyai pembina yang secara eksplisit mengambil senarai pemula, std::array ditakrifkan sebagai struct:
<code class="cpp">template<typename T, int size> struct std::array { T a[size]; };</code>
Oleh itu, ia tidak mempunyai pembina yang menerima secara langsung senarai pemula. Sebaliknya, ia boleh dimulakan menggunakan permulaan agregat.
Untuk mengagregat dengan betul memulakan tatasusunan di dalam std::array struct, satu set tambahan pendakap kerinting diperlukan:
<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>
Ia adalah perlu diperhatikan bahawa piawaian C menunjukkan bahawa pendakap tambahan harus menjadi pilihan dalam senario ini. Oleh itu, ralat kompilasi yang anda alami dengan GCC 4.6.1 berkemungkinan pepijat dalam pengkompil.
Atas ialah kandungan terperinci Mengapakah GCC 4.6.1 menimbulkan ralat apabila memulakan `std::array` dengan pendakap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!