Будет ли предстоящее добавление модулей в c ++ исправлять / облегчать необходимость использования языка pimpl?

Идиома pimpl, насколько я могу судить, скрывает частную реализацию за заранее объявленным именем символа, поэтому она может быть объявлена ​​и использована в частном модуле cpp.

Пример: https://cpppatterns.com/patterns/pimpl.html

Насколько я могу судить, поскольку класс hosint pimpl должен знать о его структуре (размер, aligment), pimpl должен быть косвенным через некоторый указатель.

(или выделенный как блок достаточного размера, затем перемещенный / созданный в место, где он будет переосмыслен при помощи последующего приведения.)

Решает ли это следующая спецификация модулей?

1

Решение

P0142R0

Иногда досадным правилом стандарта C ++ является правило контроля доступа, а не
ность. Например. закрытый член класса виден, но не доступен для не-члена
юридические лица. В частности, любое изменение частного члена класса может вызвать
электронная обработка любой единицы перевода, которая зависит от определения этого класса, даже если
изменение не влияет на действительность зависимых единиц. Заманчиво решить
эта проблема с модульной системой. Тем не менее, имея два различных набора правил
(видимость и доступность) для учащихся кажется нам нежелательным и
Сильно плодородный источник путаницы. Кроме того, мы хотим поддержать массовую миграцию
существующих кодов для модулей без программистов, чтобы беспокоиться о классе
правила поиска имени пользователя: если вы понимаете эти правила сегодня, то вы не понимаете
Вы должны изучить новые правила, когда вы переходите на модули, и вам не нужно беспокоиться
о том, как предоставляются классы, которые вы используете (через модули или не модули).

Правило 3
Как правило, любое свойство класса (например, полнота), которое вычисляется в
часть экспортной декларации модуля доступна для импорта модулей как
является.

Поскольку все свойства класса видимы для импортера, любое изменение этих свойств будет видно в импортере. Я не вижу модулей, решающих проблему, которую решает PIMPL.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector