我无法通过搜索找到答案,所以下一步是询问。假设我有一些这样的代码:
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 可以使用常量参数,但是如果部分参数是常量而部分是可变的,它会部分优化吗?
总结:一个函数(它必须是内联的,对吗?)是否可以通过常量传播进行部分优化,如果可以,这样做的要求是什么?
即使在我写这篇文章的时候,我也在想一个内联函数调用会传播常量......