ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Среда
2 декабря
/1053624
Топик полностью
fk0 (19.11.2020 15:27, просмотров: 108) в ответ на Интересно почему так не прокатывает с массивами, которые уже требуют memcpy? - автор: my504
В C/C++ вообще нет массивов как типа данных... Он всегда редуцируется до указателя на первый элемент. Массив, в частности, нельзя передать в качестве аргумента функции, нельзя вернуть из функции. 

В C++ от безысходности придумали std::array, но правда это что-то типа структуры нужного размера -- вот его можно и вернуть из функции и передать по значению (с копированием). Но опять же там костыли, как и с std::initializer_list (просто попробуйте реализовать свой std::my_array или std::my_initializer_list путём копирования кода из библиотечных хедеров -- и обнаружите, что работать перестало, т.к. в компиляторе есть костыли и подпорки: когда он видит имя типа "std::array" или "std::initializer_list" то делается некоторая магия, а иначе нет...)

[ZX]
Ответить