Dalam C 11, mencipta tatasusunan constexpr bagi elemen N tidak semudah dalam versi bahasa kemudian . Walaupun tatasusunan constexpr diperkenalkan dalam C 11, fungsinya adalah terhad dan tidak mungkin untuk mencipta tatasusunan constexpr dengan panjang berubah-ubah menggunakan sintaks yang sama seperti dalam C 14 dan seterusnya.
Walau bagaimanapun, menggunakan beberapa teknik lanjutan dan constexpr, adalah mungkin untuk mencapai hasil yang serupa dalam C 11. Begini caranya:
#include <iostream> template<int N> struct A { constexpr A() : arr() { for (auto i = 0; i != N; ++i) arr[i] = i; } int arr[N]; }; int main() { constexpr auto a = A<4>(); for (auto x : a.arr) std::cout << x << '\n'; }
Dalam ini contoh, kami mentakrifkan fungsi constexpr A
Dalam fungsi utama, kami mencipta tika A<4> dan cetak nilai tatasusunan. Memandangkan tatasusunan ialah constexpr, pengkompil boleh menentukan nilainya pada masa penyusunan, memastikan tiada pengiraan masa jalan dilakukan untuk tatasusunan.
Pendekatan ini membolehkan kami mencipta tatasusunan constexpr dalam C 11, walaupun sintaks adalah lebih kompleks berbanding dalam versi bahasa yang terkemudian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Tatasusunan Constexpr bagi Unsur N dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!