Есть ли предложение расширить язык C ++, чтобы избежать pimpl?

Иногда вы хотите предоставить объявление класса, которое не является просто непрозрачным предварительным объявлением, но имеет открытую функциональность — но вы не хотите фиксировать свои частные или специфичные для реализации поля и методы. Одним из решений для этого является идиома — используя указатель на внутренний класс, содержащий публичную реализацию класса.

Мне не очень нравится использовать pimpl, и хотелось бы, чтобы язык позволял вам иметь по-настоящему приватные члены — чтобы код, использующий класс, не «видел» их объявление (и, следовательно, вероятно, его не нужно перекомпилировать, когда детали реализации менять). Кроме того, недавно я заметил, что C ++ развивается намного быстрее — трехлетний шаблон в стандартных обновлениях. Итак … есть ли предложение добавить такую ​​функциональность в C ++? Некоторые компиляторы в настоящее время поддерживают это возможно?

2

Решение

Да, такое предложение существует. Было даже несколько предыдущих версий, самая последняя из которых была в прошлом году:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf

Предложение позволит operator. быть перегруженным, перечисляя несколько вариантов использования:

  • Умные ссылки
  • Умные указатели
  • Доверенные
  • Уточнение интерфейса
  • Pimpl
  • рукоятки

Вы можете прочитать связанное предложение для получения дополнительной информации. Конечно, это не обязательно будет принято, и, даже если оно будет принято, оно, вероятно, не попадет в C ++ 17.

1

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


По вопросам рекламы [email protected]