Насколько я понимаю (могу и ошибаться), в С++ когда 10 файлов инклюдят набор из 10 других файлов (.h), то приходится их 100 раз парсить и осмыслять, т.к. из-за препроцессора и всяких #ifdef там каждый раз по-разному может получаться. В D каждый файл парсится и осмысляется один раз.