const против статического const в анонимном пространстве имен - PullRequest
2 голосов
/ 30 октября 2019

Я хочу иметь возможность предоставить имя по умолчанию для класса, чтобы у меня всегда было разумное имя для использования при регистрации ошибок. Мне не нужно (или не хочу), чтобы это имя было частью самого класса. Это имя по умолчанию никогда не изменится и поэтому является хорошим кандидатом на то, чтобы быть const или даже constexpr, но вы не можете сделать constexpr QString или constexpr std::string по любой причине.

В моем файле cpp лучше сделать

namespace {
 const QString NAME("Some Name");
}

или

namespace {
 static const QString NAME("Some Name");
}

Я знаю, что в обеих версиях NAME будет иметь внутреннюю связь,но что такое лучшая практика? Я видел несколько дискуссий о перемещении глобальных переменных в анонимное пространство имен, но ни в одном из них не упоминалось использование static внутри пространства имен.

Ссылки:

1 Ответ

1 голос
/ 30 октября 2019

static полностью избыточен в анонимном пространстве имен. Он ничего не делает .

. Оставьте это, поскольку в этом контексте ничего не добавляется, кроме шума и дополнительной типизации. Такие инструменты, как clang-tidy, даже генерируют предупреждение о его избыточности (в зависимости от используемых опций), поэтому его исключение также снижает шум от инструментов.

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