Из справочника по языкам D
main () Функция
Для консольных программ main () служит точкой входа. Он вызывается после запуска всех инициализаторов модуля и после выполнения любых тестов модулей. После возвращения все деструкторы модуля запускаются. main () должен быть объявлен с использованием одной из следующих форм:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
То есть void main
законно.
Из тех же документов оператор возврата часть:
Возврат выходит из текущей функции и предоставляет ее возвращаемое значение. Выражение требуется, если функция указывает тип возврата, который не является пустым. Выражение неявно преобразуется в тип возвращаемого значения функции
Похоже, что возвращение чего-либо из функции void явно не запрещено (и действительно, это прекрасно компилируется).
(Почему вы хотите это сделать?)