12,982
回編集
(→概要) |
|||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
C++には、<code>constexpr</code>という概念がある。<br> | C++には、<code>constexpr</code>という概念がある。<br> | ||
<br> | |||
今まで、const修飾してきたものには2種類ある。<br> | |||
* ROM化可能な値。 | |||
* 実行時にしか決まらないが、一度初期化した後は二度と変更されない値。 | |||
<br> | |||
C++ 11以降、前者はconstexprが受け持ち、後者はconstが受け持つことになった。<br> | |||
constexprは、constexprの制約を満たした変数の定義、関数と関数テンプレートの宣言、staticデータメンバの宣言に対して使用できる。<br> | |||
<br> | |||
つまり、constはRAMにしか配置できない変数に対して使う型修飾子となった。<br> | |||
constexprは型修飾子ではなく、型指定子である。<br> | |||
型を修飾するものでなく、ROM化できる、または、ROM化できる可能性がある、という意味を持つ指定子である。<br> | |||
<br> | <br> | ||
* constexprが使用できない、または、使用すべきではない場合 | * constexprが使用できない、または、使用すべきではない場合 |