Несогласованные спецификаторы доступа в реализации STL GCC ⇐ C++
Несогласованные спецификаторы доступа в реализации STL GCC
Читая о реализации контейнеров STL в GCC, я заметил несоответствие в использовании спецификаторов доступа в базовых классах. В частности, некоторые классы (_Vector_base) полностью общедоступны и, следовательно, разрешают доступ к любому члену извне, тогда как другие (_Deque_base) полностью защищены и, следовательно, разрешают доступ к члены только производных или дружественных классов. Более того, существуют классы (_List_base), имеющие частично публичный и частично защищённый интерфейсы. В этом анализе я предпочел исключить контейнеры, которые были представлены в C++11, поскольку они могли быть разработаны и реализованы с несколько иной точки зрения, чем контейнеры, которые уже присутствовали в предыдущих стандартах.
Мне хотелось бы знать, особенно от тех, кто активно участвовал в реализации вышеупомянутых контейнеров, существует ли последовательный технический выбор этих различий или это всего лишь идеи разных команд программистов. Кроме того, мне хотелось бы знать, был ли этот выбор основан на более широких соображениях, таких как повторное использование кода в других модулях или обеспечение большей гибкости интерфейсов с учетом будущих обновлений, или же они были основаны только на насущных потребностях.
Читая о реализации контейнеров STL в GCC, я заметил несоответствие в использовании спецификаторов доступа в базовых классах. В частности, некоторые классы (_Vector_base) полностью общедоступны и, следовательно, разрешают доступ к любому члену извне, тогда как другие (_Deque_base) полностью защищены и, следовательно, разрешают доступ к члены только производных или дружественных классов. Более того, существуют классы (_List_base), имеющие частично публичный и частично защищённый интерфейсы. В этом анализе я предпочел исключить контейнеры, которые были представлены в C++11, поскольку они могли быть разработаны и реализованы с несколько иной точки зрения, чем контейнеры, которые уже присутствовали в предыдущих стандартах.
Мне хотелось бы знать, особенно от тех, кто активно участвовал в реализации вышеупомянутых контейнеров, существует ли последовательный технический выбор этих различий или это всего лишь идеи разных команд программистов. Кроме того, мне хотелось бы знать, был ли этот выбор основан на более широких соображениях, таких как повторное использование кода в других модулях или обеспечение большей гибкости интерфейсов с учетом будущих обновлений, или же они были основаны только на насущных потребностях.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как спецификаторы знаков и спецификаторы заполнения работают с printf() и sprintf() в PHP?
Anonymous » » в форуме Php - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
C++: скопируйте контейнер STL в контейнер STL, используя лямбда-выражение
Anonymous » » в форуме C++ - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-
-
-
C++: скопируйте контейнер STL в контейнер STL, используя лямбда-выражение
Anonymous » » в форуме C++ - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему в контейнерах STL в контейнерах STL нет перегрузки RVALUE Ref-квалификации?
Anonymous » » в форуме C++ - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-