「C++の基礎 - constexpr」の版間の差分

ナビゲーションに移動 検索に移動
140行目: 140行目:
  const int ten3 = twice(ten);      // コンパイル可能
  const int ten3 = twice(ten);      // コンパイル可能
  </syntaxhighlight>
  </syntaxhighlight>
<br>
下表に、ROM化できる条件を示す。なお、初期化する変数はconstexpr変数とする。<br>
下表から分かることは以下の3つである。<br>
* 渡す引数の指定子は、<code>const / constexpr</code>を指定する。
* 仮引数の指定子には、<code>指定子なし / const</code>を指定する。
* 関数の指定子は、必ず<code>constexpr</code>を指定する。<br>
<center>
{| class="wikitable"
|-
! 引数の指定子 !! 仮引数の指定子 !!  関数の指定子 !! コンパイルの可否
|- style="text-align:center;"
| × || - || - || ×
|- style="text-align:center;"
| - || - || × || ×
|- style="text-align:center;"
| - || - || const || ×
|- style="text-align:center;"
| - || constexpr || - || ×
|- style="text-align:center;"
| const || × || constexpr || ○
|- style="text-align:center;"
| const || const || constexpr || ○
|- style="text-align:center;"
| constexpr || × || constexpr || ○
|- style="text-align:center;"
| constexpr || const || constexpr || ○
|}
</center>
<br>
<br>
上記の例のように、constexpr関数の引数に何を渡すか、constexpr関数の戻り値で何を初期化するかによって、<br>
上記の例のように、constexpr関数の引数に何を渡すか、constexpr関数の戻り値で何を初期化するかによって、<br>
146行目: 174行目:
これは、設計者に対して、ROM化できるソースコードを記述する促すことになる。<br>
これは、設計者に対して、ROM化できるソースコードを記述する促すことになる。<br>
<br>
<br>
==== constexpr変数への戻り値の代入 ====
==== constexpr変数への戻り値の代入 ====
constexprは関数にも付加することができる。<br>
constexprは関数にも付加することができる。<br>

案内メニュー