Rumah > pembangunan bahagian belakang > C++ > Mengapakah GCC 4.6.1 menimbulkan ralat apabila memulakan `std::array` dengan pendakap?

Mengapakah GCC 4.6.1 menimbulkan ralat apabila memulakan `std::array` dengan pendakap?

Mary-Kate Olsen
Lepaskan: 2024-10-29 06:42:31
asal
597 orang telah melayarinya

Why does GCC 4.6.1 throw an error when initializing a `std::array` with braces?

std::array Initialization dengan Braces

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan