D имеет фантастическую модульную систему, которая значительно сокращает время компиляции по сравнению с С++. Согласно документации D все еще содержит непрозрачные структуры и союзы, чтобы позволить идиому pimpl. Мой вопрос: как я могу объявить вложенную структуру (или объединение) в одном модуле и определить ее в другой? Каков синтаксис для этого?
В С++ заголовок будет выглядеть следующим образом:
struct S { 
    ... 
    struct Impl; 
    Impl * p; 
};
и файл реализации (cpp файл) будет использовать интересный :: -syntax, как это:
#include "header.h"
struct S::Impl { 
    ... 
};
Как реализовать то же самое в D?
