C ++从模板函数编译时间数组大小

时间:2019-03-18 20:51:33

标签: c++ arrays

即使数组大小是可编译时可计算的值,我也不知道为什么函数中的数组创建通过了,但类中的数组却没有通过。

res.sendFile(`${__dirname}/${buildPath}/index.html` // Note the backticks

1 个答案:

答案 0 :(得分:5)

由于getPow不是constexpr,因此不能在需要常量表达式(如C数组大小)的地方使用。

int test[getPow<2>()]; // passes 。您不幸的是使用VLA扩展。它不应该通过。

您可以使用以下方法解决问题:

template <unsigned N>
constexpr unsigned getPow()
{
     return 1 << N;
}