Czy legalne jest rzucanie wskaźnika do odwołania do tablicy przy użyciu static_cast w C ++?
Mam wskaźnikT * pValues
które chciałbym zobaczyć jakoT (&values)[N]
W tej odpowiedzi SOhttps://stackoverflow.com/a/2634994/239916, proponowanym sposobem na to jest
T (&values)[N] = *static_cast<T(*)[N]>(static_cast<void*>(pValues));
Martwię się o to. W swoim przykładziepValues
jest inicjowany w następujący sposób
T theValues[N];
T * pValues = theValues;
Moje pytanie brzmi, czy odlewana konstrukcja jest legalna, jeślipValues
pochodzi z dowolnej z następujących konstrukcji:
T theValues[N + M]; // M > 0
T * pValues = theValues;
2:T * pValues = new T[N + M]; // M >= 0