Я не уверен, что вы подразумеваете под "инициализацией / объявлением" в этом контексте.Далее массив является prvalue
template<typename T> using alias = T;
int main() { return alias<int[]>{1, 2, 3}[0]; }
. Это можно проверить с помощью decltype(alias<int[]>{1, 2, 3})
, имеющего тип int[3]
.Создание массивов таким образом на лету изначально не предназначалось для работы, но было включено в рабочий проект в связи с соответствующей работой по равномерной инициализации.Когда я понял, что некоторые параграфы в рабочем проекте C ++ 0x запрещают какой-то особый случай создания временных массивов на лету, тогда как другие параграфы позволяют это, я отправил отчет о дефектах в комитет C ++, который затемчастично работающей реализации GCC решили полностью поддержать это.