Что пусто []?

Я видел тип void[], используемый в нескольких местах в документах D и подписях функций. Что это значит?

Я искал раздел массива в документации, а также в Google, но не нашел ничего убедительного. Все, что я нашел, это то, что все массивы неявно конвертируются в тип void[]. Это просто нетипизированный массив?

Ответ 1

void[] - всего лишь массив чего угодно. in void[] - удобная сигнатура для функции, которая просто записывает байты в файл или что-то, потому что принимает любой массив - void, что означает, что тип не важен, а in означает, что вы не имеете права изменять или сохранить его, что позволяет вам принимать const или неизменяемые массивы.

Чтобы использовать void[], вы должны сначала перенести его на что-то еще, как правило, ubyte[], чтобы элементы имели конкретный размер, позволяющий индексировать его. void[].length указывается как общее количество байтов в массиве, поэтому, если вы просто передаете указатель и длину данных в функцию (например, файл файла уровня операционной системы, например, Linux write syscall), передайте arr.ptr, arr.length будут получать эти байты, не заботясь о том, что они представляют.