expressão não foi avaliada como uma constante em C ++ VS

Estou com um erro em que na declaração do VLA está dando erro de "expressão não foi avaliada como uma constante" - tentei declarar int l, m, r, n1, n2 constante, mas ainda assim não funciona. Embora eu esteja ciente do conceito de que o compilador gostaria de saber uma matriz de tamanho fixo em tempo de compilação, no entanto, tenho visto poucas implementações online, onde as pessoas implementaram como abaixo.

Pesquisa wiki adicionalinsira a descrição do link aqui mostraram que nem todas as versões do C ++ o suportam -

Pergunta - como fazê-lo funcionar sem criar alocação dinâmica de memória?

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 -
}

questionAnswers(2)

yourAnswerToTheQuestion