考虑以下代码:
为什么在 make_const 调用时出现错误?
然而,这不是:
static constexpr int make_const(const int i){
return i;
}
void t1(const int i)
{
constexpr int ii = make_const(i); // error occurs here (i is not a constant expression)
std::cout<<ii;
}
int main()
{
t1(12);
}
为什么在 make_const 调用时出现错误?
更新
但这个有效:
constexpr int t1(const int i)
{
return make_const(i);
}
然而,这不是:
template<int i>
constexpr bool do_something(){
return i;
}
constexpr int t1(const int i)
{
return do_something<make_const(i)>(); // error occurs here (i is not a constant expression)
}
void t1(const int)
中,i
不是constexpr
。 - stefan