サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

C++Builderで最新C++ constexprの使用方法を学ぶ

constexpr modern c

このブログでは、constexpr変数とconstexpr関数を利用する方法を学習します。このライブラリを利用する理由は、実行時ではなくコンパイル時に計算を実行するアプリケーションのパフォーマンスの向上させることで、コンパイル時に時間を割り当てることにより、結果的に実行時間を節約することが目的です。

constexprキーワードはC++11で導入され、C++14およびC++17で改善されました。

constexprは、オブジェクトまたは関数の値をコンパイル時に評価でき、その式を他の定数式で使用できることを指定します。 任意のコードが値を変更しようとすると、コンパイラエラーが発生します。constとは異なり、constexprは関数やクラスコンストラクタにも適用できます。  constexpr は、値または戻り値が定数であり、可能な場合はコンパイル時に計算されます。

const変数とconstexpr変数の主な違いは、const変数の初期化を実行時まで延期できることです。 constexpr変数は、コンパイル時に初期化する必要があります。 さらにconstexpr変数または関数のすべての宣言には、constexpr指定子が必要です。

[crayon-6768eb0b25fcf852960322/]

C++17では、コンパイル時に条件式を推定することができます。これにより、コンパイラは誤った分岐を排除できます。

[crayon-6768eb0b25fd6355471362/]

constexprを使えば、もっと驚くようなことができるようになります。ぜひ、以下のワークショップを参考してください。

constexpr関数は、関数にconstexprを指定することで、コンパイル時に関数を実行できるようになります。また実行時の値が実引数として渡された場合は、実行時に評価されます。なお、constexpr関数またはコンストラクタは暗黙のうちにインラインになります。

[crayon-6768eb0b25fd8177634708/]

それでは、constexpr変数、constexpr関数を利用したユースケースを見てみましょう。

[crayon-6768eb0b25fda128998423/]

このブログで紹介しましたサンプルコードは、こちらからダウンロードできます。

C++Builder 10.4では、最新のC++17の言語仕様をサポートしており、C++17の新機能もすぐに試せます。製品の詳細は、こちらを参照してください。

「C++Builderで使用方法を学ぶ」シリーズのバックナンバー

 

モバイルバージョンを終了