Здравствуйте, YuriV, Вы писали:
YV>Здравствуйте, Zhendos, Вы писали:
Z>>Так идея в том чтобы storage тоже имел "forward declaration" наряду с blob.
Z>>https://stackoverflow.com/questions/951234/forward-declaration-of-nested-types-classes-in-c
YV>Это не идея, а непонимание. Полный тип в C++ это его имя и описание его структуры. А "forward declaration" объявляет лишь имя типа (incomplete type) структура которого сейчас неизвестна и поэтому получить доступ к структуре (storage::blob) incomplete type через его имя невозможно. Тут всё логично и никакой "дыры" в языке нет. Можно ввести в язык расширяемые классы, ну как namespace может расширяться в разных единицах трансляции новыми declaration/definition. Этакая альтернатива наследованию, но к чему это может привести прогнозировать сложно.
Неверно. Вложенный тип не является частью типа, а находится в его пространстве имен.
Нет никаких проблем чтобы сделать опережающее описание следующим образом:
class storage;
class storage::blob;