Иногда вы хотите предоставить объявление класса, которое не является просто непрозрачным предварительным объявлением, но имеет открытую функциональность — но вы не хотите фиксировать свои частные или специфичные для реализации поля и методы. Одним из решений для этого является идиома — используя указатель на внутренний класс, содержащий публичную реализацию класса.
Мне не очень нравится использовать pimpl, и хотелось бы, чтобы язык позволял вам иметь по-настоящему приватные члены — чтобы код, использующий класс, не «видел» их объявление (и, следовательно, вероятно, его не нужно перекомпилировать, когда детали реализации менять). Кроме того, недавно я заметил, что C ++ развивается намного быстрее — трехлетний шаблон в стандартных обновлениях. Итак … есть ли предложение добавить такую функциональность в C ++? Некоторые компиляторы в настоящее время поддерживают это возможно?
Да, такое предложение существует. Было даже несколько предыдущих версий, самая последняя из которых была в прошлом году:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf
Предложение позволит operator.
быть перегруженным, перечисляя несколько вариантов использования:
Вы можете прочитать связанное предложение для получения дополнительной информации. Конечно, это не обязательно будет принято, и, даже если оно будет принято, оно, вероятно, не попадет в C ++ 17.