📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

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が使用できない、または、使用すべきではない場合