У меня есть указатель T * pValues
, который я хотел бы видеть как T (&values)[N]
В этом ответе SO qaru.site/info/380318/... предлагаемый способ сделать это
T (&values)[N] = *static_cast<T(*)[N]>(static_cast<void*>(pValues));
Я думаю об этом. В его примере pValues
инициализируется следующим образом
T theValues[N];
T * pValues = theValues;
Мой вопрос заключается в том, является ли конструкция трансляции законной, если pValues
исходит из любой из следующих конструкций:
1
T theValues[N + M]; // M > 0
T * pValues = theValues;
2
T * pValues = new T[N + M]; // M >= 0