Home >Backend Development >C++ >How to Create a Constexpr Zero-Based Array in C 11?
Constexpr Array Generation in C 11
Question:
How can we create a constexpr zero-based array up to a specified size in C 11?
Answer:
In C 14, this task became straightforward thanks to the introduction of constexpr constructors and loops. However, in C 11, we need to adopt a more intricate approach.
Implementation:
Step 1: Utilizing a Class Template with a Constexpr Constructor
We define a class template A that takes the array size N as a template parameter. It includes a constexpr constructor that initializes an array arr of size N.
Step 2: Populating the Array
Within the constexpr constructor, we iterate up to N, assigning each element of arr its corresponding index. This allows us to populate the array with the 0 to n-1 sequence.
Step 3: Usage
We can instantiate the A class template to obtain an instance of the constexpr array. By accessing its arr member, we can interact with its elements.
Here's an example code demonstrating this approach in C 11:
#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'; }
This code will output the expected 0 to 3 sequence, demonstrating the successful creation of a constexpr zero-based array in C 11.
The above is the detailed content of How to Create a Constexpr Zero-Based Array in C 11?. For more information, please follow other related articles on the PHP Chinese website!