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