É legal converter um ponteiro para referência de matriz usando static_cast em C ++?
Eu tenho um ponteiroT * pValues
que eu gostaria de ver como umT (&values)[N]
Nesta resposta SOhttps://stackoverflow.com/a/2634994/239916, a maneira proposta de fazer isso é
T (&values)[N] = *static_cast<T(*)[N]>(static_cast<void*>(pValues));
A preocupação que tenho com isso é. No exemplo dele,pValues
é inicializado da seguinte maneira
T theValues[N];
T * pValues = theValues;
Minha pergunta é se a construção do elenco é legal sepValues
vem de qualquer uma das seguintes construções:
T theValues[N + M]; // M > 0
T * pValues = theValues;
2:T * pValues = new T[N + M]; // M >= 0