Именованное пространство имен с внутренней связью - PullRequest
1 голос
/ 15 марта 2019

[@ PasserBy обнаружил, что мой вопрос является дубликатом.Вопрос может быть закрыт, спасибо.]

Как я могу получить именованное пространство имен с внутренней связью?То есть как я могу получить именованное пространство имен, невидимое для внешних исходных файлов?Я хочу это:

static namespace N {
    int foo() {return 10;}
    int bar() {return 20;}
}

Однако, к сожалению, C ++ не распознает static namespace.

1 Ответ

3 голосов
/ 15 марта 2019

Заключить именованное пространство имен в безымянное пространство имен:

namespace {
    namespace N {
        int foo() {return 10;}
        int bar() {return 20;}
    }
}

int sum()
{
    return N::foo() + N::bar();
}

Это работает, потому что безымянное пространство имен автоматически экспортирует своих членов (единственным участником в данном случае является пространство имен N) в окружающую область видимости - без предоставления участникам доступа к другим исходным файлам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...