Ist es zulässig, in C ++ einen Zeiger auf eine Arrayreferenz mit static_cast umzusetzen?
Ich habe einen ZeigerT * pValues
das möchte ich alsT (&values)[N]
In dieser SO Antworthttps://stackoverflow.com/a/2634994/239916ist der vorgeschlagene Weg, dies zu tun
T (&values)[N] = *static_cast<T(*)[N]>(static_cast<void*>(pValues));
Die Sorge, die ich habe, ist. In seinem BeispielpValues
wird auf folgende Weise initialisiert
T theValues[N];
T * pValues = theValues;
Meine Frage ist, ob das Cast-Konstrukt legal ist, wennpValues
stammt aus einem der folgenden Konstrukte:
T theValues[N + M]; // M > 0
T * pValues = theValues;
2:T * pValues = new T[N + M]; // M >= 0