検索しても答えが見つからなかったので、次のステップは質問です。次のようなコードがあるとします。
template<class Int>
inline Int onbit(Int value, int n) {
return value | (static_cast<Int>(1) << n);
}
このようにコードを呼び出すonbit(A, 4)
と、定数4
が伝播されて最適化されますか、それとも定数になるtemplate<int n, class Int>
ようにテンプレート()にする必要があります。ここではC++0x constexprが必要ですか?必要な場合は、どの程度正確に使用する必要がありますか(int n
constまたはconstexprである必要がありますか?)。
constexprは定数パラメーターで機能することを知っていますが、パラメーターの一部が一定で一部が可変である場合、部分的に最適化されますか?
要約:関数(インラインで正しくなければならない)を定数伝播で部分的に最適化することは可能ですか?もしそうなら、それを行うための要件は何ですか?
これを書いているときでさえ、インライン関数呼び出しが定数を伝播すると思っています...