Подтвердить что ты не робот

Является ли публичное использование частного портативного портативного устройства?

class Settings
{
private:
    typedef std::map<std::string, SettingsOption> OptionMap;

public:
    typedef OptionMap::iterator iterator;
    typedef OptionMap::const_iterator const_iterator;

    ...
};

Является ли этот код переносимым? Что такое стандартное состояние?

4b9b3361

Ответ 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]