Ответ 1
Это правовые и Settings::iterator
и Settings::const_iterator
доступны для всех пользователей класса Settings
.
Контроль доступа в С++ применяется исключительно к именам. Там есть примечание и пример в ISO/IEC 14882: 2011 11 [class.access]/4, который дает понять, что это намерение.
[...] [Примечание. Поскольку управление доступом применяется к именам, если контроль доступа применяется к имени typedef, рассматривается только доступность самого typedef. Доступность объекта, упомянутого в typedef, не рассматривается. Например,
class A {
class B { };
public:
typedef B BB;
};
void f() {
A::BB x; // OK, typedef name A::BB is public
A::B y; // access error, A::B is private
}
-end note]