12,982
回編集
(→まとめ) |
|||
578行目: | 578行目: | ||
return 0; | return 0; | ||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== レビュー == | |||
# constが付加された変数を見つけた場合、その変数はRAMにしか配置できないものか確認する。<br>もし、ROM化できる場合、constexpr指定子に変更できないか考えて指摘する。 | |||
# constexprテンプレート関数の内部に、ROM化できない文や関数呼び出しが入っていないか確認する。 | |||
# ESCRでは再帰は使用してはいけないので、constexpr関数内において、再帰を使用してはいけない。 | |||
# constexpr関数やconstexpr関数テンプレートを見つけた場合、その戻り値で初期化している変数とconstexpr型指定されているかどうか確認する。<br>そうでなければ、constexpr関数やconstexpr関数テンプレートの存在意義がない。 | |||
<br> | |||
以下の例は、constexprを付加しても意味の無い例である。<br> | |||
ただし、コンパイルエラーにはならない。<br> | |||
<syntaxhighlight lang="c++"> | |||
template <typename T> | |||
constexpr inline static T GetFromCin() | |||
{ | |||
T value; | |||
cin >> value; | |||
return value; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |