constexprとの出会い
何を言い出すかと思いきやって感じですが笑
いつも通り、ヘッダファイルに定数を定義しようとしていた時の話。
static const float duration = 5.f;
コンパイルエラーが出ました。
左端の赤丸をクリックしてみるとconstexprが必要だよなんて言われてます。
確かに、この問題はconstexprを適用すると問題なくコンパイル出来る様になりました。
constexprとは?
じゃぁ、そもそもconstexprとはなんなのでしょうか?
constexprはC++11から導入された指定子で、変数の定義や、関数の宣言等の宣言に適用するものです。
constexprが適用された変数、関数はコンパイル時に定数となります。
実行時ではなく、コンパイル時です。
この意味がお分かりでしょうか?
つまり、constexprを使っておけば
実行時に必要な値をあらかじめコンパイル時に計算し、定数化する事も可能なのです。
簡単に言えば、高速化ですね。
かなり詳細な説明は中3女子(本当に?)のGenyaMurakamiさんのパワポに載ってますのでこちらも参考に。
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
中3女子でもわかる constexpr
コメント