2015-05-23 8 views
2

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

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

+0

Модули вдоль линий, что вы ищете? На них делается большая работа. – chris

+0

Согласно [это резюме] (https://stackoverflow.com/questions/3596147/modules-in-c11) здесь, на SO, модули не совпадают с классами. то есть, похоже, что некоторые методы не могут принадлежать модулю, а другие нет. Или я ошибаюсь? – einpoklum

+1

Я сомневаюсь, что будет предложение о чем-то столь же расплывчатом, как «обрывание прыща». – juanchopanza

ответ

1

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

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

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

  • Смарт референции
  • Умный указатель рабочих мест
  • Прокси
  • Уточнение интерфейса
  • Pimpl
  • Ручки

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

+0

О, это довольно интересный подход ... он не совсем избавляет от прыщей, но делает его использование менее искусным. – einpoklum