【cocos2d-x】constexprについて

c++

constexprとの出会い

何を言い出すかと思いきやって感じですが笑

いつも通り、ヘッダファイルに定数を定義しようとしていた時の話。

static const float duration = 5.f;

コンパイルエラーが出ました。

スクリーンショット 2015-01-06 0.06.09

左端の赤丸をクリックしてみるとconstexprが必要だよなんて言われてます。
確かに、この問題はconstexprを適用すると問題なくコンパイル出来る様になりました。

constexprとは?

じゃぁ、そもそもconstexprとはなんなのでしょうか?

constexprはC++11から導入された指定子で、変数の定義や、関数の宣言等の宣言に適用するものです。
constexprが適用された変数、関数はコンパイル時に定数となります。

実行時ではなく、コンパイル時です。

この意味がお分かりでしょうか?

つまり、constexprを使っておけば
実行時に必要な値をあらかじめコンパイル時に計算し、定数化する事も可能なのです。

簡単に言えば、高速化ですね。

かなり詳細な説明は中3女子(本当に?)のGenyaMurakamiさんのパワポに載ってますのでこちらも参考に。

constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
中3女子でもわかる constexpr

このブログのcocos記事一覧

コメント

タイトルとURLをコピーしました