表达式没有在C++ VS中评估为常量

the*_*mer 3 c++ arrays compiler-errors

我遇到了错误,其中VLA的声明给出了"表达式没有评估为常量"的错误 - 我试图声明int l,m,r,n1,n2常量,但它仍然不起作用.虽然我知道编译器想要在编译时知道固定大小数组的概念,但是我看到很少有在线实现,人们已经实现如下.

其他wiki搜索输入链接描述这里 显示并非所有版本的C++都支持它 -

问题 - 如何在不创建动态内存分配的情况下使其工作?

template<typename T>
void mergesort<T>::_merge_array(int l, int m, int r)
{
    int i, j, k;
    int n1 = m - l + 1;
    int n2 = r - m;

    /* create temp arrays */
    int L[n1], R[n2];  // error -
}
Run Code Online (Sandbox Code Playgroud)

cad*_*luk 5

严格符合C++的实现没有可变长度数组.std::vector改为使用:

#include <vector>

...

std::vector<int> L(n1), R(n2);
Run Code Online (Sandbox Code Playgroud)