[C++14] size of VLA
От: placement_new  
Дата: 28.06.17 03:49
Оценка:
Помему GCC 4.9 в режиме C++ 14 всегда возвращает 1 когда мы пытаемся взять sizeof от VLA?

int foo(int i) {
    int a[i];
    return sizeof(a);
}


...
        mov     eax, 1
        mov     rsp, rcx
...


https://godbolt.org/g/RFdtou

Это было UB в С++ 14?
https://gcc.gnu.org/gcc-5/changes.html#cxx
"G++ no longer supports N3639 variable length arrays, as they were removed from the C++14 working paper prior to ratification. GNU VLAs are still supported, so VLA support is now the same in C++14 mode as in C++98 and C++11 modes."


http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
Отредактировано 28.06.2017 4:31 placement_new . Предыдущая версия . Еще …
Отредактировано 28.06.2017 4:30 placement_new . Предыдущая версия .
Re: [C++14] size of VLA
От: _NN_ www.nemerleweb.com
Дата: 28.06.17 07:09
Оценка:
Здравствуйте, placement_new, Вы писали:

Похоже на баг.
В 5.1 всё работает:

https://godbolt.org/g/b9KUrT
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: [C++14] size of VLA
От: placement_new  
Дата: 28.06.17 14:16
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, placement_new, Вы писали:


_NN>Похоже на баг.

_NN>В 5.1 всё работает:

_NN>https://godbolt.org/g/b9KUrT


Looks like a feature

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
The sizeof operator shall not be applied to ..., to an array of runtime bound, ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.