C 11 では、N 要素の constexpr 配列の作成は、言語の以降のバージョンほど簡単ではありません。 。 constexpr 配列は C 11 で導入されましたが、その機能は制限されており、C 14 以降と同じ構文を使用して可変長の constexpr 配列を作成することはできません。
ただし、いくつかの高度なテクニックとconstexpr 関数を使用すると、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'; }
この例では、 constexpr 関数 A
main 関数では、A のインスタンスを作成します。そして配列の値を出力します。配列は constexpr であるため、コンパイラはコンパイル時にその値を決定し、配列に対して実行時の計算が実行されないようにすることができます。
このアプローチにより、構文が異なっていても、C 11 で constexpr 配列を作成できます。言語の後のバージョンよりも複雑です。
以上がC 11 で N 要素の Constexpr 配列を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。