Описание тега unnamed-namespace
An unnamed namespace in C++ restricts a set of declarations within an unnamed namespace block to the enclosing file. This is preferred by the standard over static functions, which fulfilled a similar purpose in C.
0
ответов
Определения вложенных пространств имен с именованными пространствами имен
Недавно, работая с функцией определения вложенного пространства имен, добавленной в C++17, я натолкнулся на сценарий, который заставил меня задуматься. При обычном вложенном определении пространства имен серия именованных пространств имен может быть…
08 июн '18 в 04:25
1
ответ
Разрешение пространства имен C++
Когда я пытаюсь построить этот код: // foo.h namespace foo { namespace bar { void put(); } } #include "foo.h" namespace foo { namespace { template<typename T> void put() { } } void bar::put() { put<int>(); }; } Я получаю ошибку: foo.cpp:…
28 фев '13 в 14:04
2
ответа
Как вызвать вспомогательный шаблонный шаблон в анонимном пространстве имен?
В приведенном ниже коде foo должна быть доступной для всех функцией, но foo_helper не должен, поэтому я поместил его в анонимное пространство имен. Очевидно, что я ухожу от охраны и включает в этом примере, но они есть. foo.h: namespace { void foo_h…
15 окт '15 в 17:12
0
ответов
Как вы получаете информацию о файлах для переменных в безымянных пространствах имен из файлов PDB?
Мне нужно получить имена файлов из файла PDB, которые соответствуют переменным в безымянных пространствах имен. Я использую VS2012 и C++. Я собрал небольшой пример тривиального кода, чтобы проиллюстрировать проблему: // file: unnamed_namespace1.cpp …
04 сен '15 в 20:10
1
ответ
Два безымянных пространства имен, определенных в одном и том же декларативном регионе
Рассмотрим следующий код: #include<iostream> namespace { int a = 5; } namespace { int a = 5; } int main() { int i=5; { std::cout << i; } } Этот код недействителен. Это потому, что переопределение a произошло Но я ожидал, что это действит…
25 июн '14 в 13:25
0
ответов
Как определить более чем член пространства имен без имени снаружи?
Когда дело доходит до использования namespaces это действительно хорошая вещь, чтобы избежать столкновения имен. Но вот что важно для меня: использование anonymous namespaces, Здесь, в моем примере, по какой-то причине я определил два безымянных про…
23 дек '17 в 17:41
3
ответа
Ненужное использование безымянных пространств имен C++
Я продолжаю видеть такой код везде в моей компании: namespace { const MAX_LIMIT = 50; const std::string TOKEN = "Token"; } Я не совсем понимаю, зачем вам здесь анонимное пространство имен. С одной стороны, вы хотите локальный переводчик для MAX_LIMI…
12 май '16 в 09:15
2
ответа
Следует ли избегать безымянных функций пространства имен, чтобы уменьшить размеры таблицы символов?
Я слышал, как утверждается, что использование безымянных пространств имен в C++ для определения функций и гарантии того, что они не могут быть вызваны извне модуля компиляции, в котором они определены, не очень хорошо в очень больших средах кода, по…
17 янв '13 в 18:16
2
ответа
Как получить доступ к Безымянной переменной пространства имен, вложенной в именованное пространство имен?
Этот вопрос уже обсуждался в ссылке безымянного пространства имен в именованном пространстве имен, но не было предоставлено точных ответов о том, как получить доступ к переменным безымянного пространства имен, вложенных в именованное пространство им…
25 авг '17 в 18:34
1
ответ
Ограничение доступа громко к глобальной переменной, определенной в пространстве имен
У меня есть небольшая проблема, связанная с пространствами имен, учитывая следующее в заголовочном файле: namespace A { namespace B { void SetMemberValue(double value) { _member = value; } double FunctionThatUsesMember(double a) { return a * _member…
29 авг '13 в 21:37
2
ответа
Как использование безымянных пространств имен в заголовках может привести к нарушениям ODR?
В Руководстве по стилю Google C++ в разделе " Пространства имен " говорится, что "использование безымянных пространств имен в заголовочных файлах может легко привести к нарушению правила определения C++ One Definition Rule (ODR)". Я понимаю, почему …
14 май '14 в 10:33
0
ответов
Конфликт имен, безымянное пространство имен, шаблон класса
У меня есть шаблон класса Foo<T>, исходя из FooBase, foo.h: class FooBase { public: virtual ~FooBase() {} }; template <class T> class Foo : public FooBase { public: T t; }; Затем у меня есть две единицы перевода, инстанцирующие Foo с раз…
06 мар '16 в 12:13
3
ответа
Дизайн класса C++: класс или функции в безымянном пространстве имен или метод закрытого класса?
Я расширяю существующий класс новой функциональности и сомневаюсь, какое дизайнерское решение использовать. Есть несколько, каждый из которых имеет свои плюсы и минусы. Мой случай таков: у меня есть заголовок файла, который имеет специальный формат,…
31 июл '14 в 07:49
2
ответа
Безымянное пространство имен против глобальной декларации
Какая разница в использовании безымянного пространства имен и глобального объявления?Есть ли конкретный контекст для использования этих двух?Можем ли мы получить доступ к безымянным компонентам пространства имен во внешних исходных файлах?
14 авг '13 в 19:03
2
ответа
Доступ к переменной внутри анонимного пространства имен (C++)
У меня есть следующий код, и я не знаю, как я могу получить доступ к х внутри анонимного пространства имен в этом параметре. Подскажите пожалуйста как? #include <iostream> int x = 10; namespace { int x = 20; } int main(int x, char* y[]) { { in…
16 сен '16 в 12:40
3
ответа
Почему типы должны быть помещены в безымянные пространства имен?
Я понимаю использование безымянных пространств имен, чтобы функции и переменные имели внутреннюю связь. Безымянные пространства имен не используются в заголовочных файлах; только исходные файлы. Типы, объявленные в исходном файле, не могут использов…
19 авг '15 в 17:58
0
ответов
Экземпляр безымянного класса в безымянном пространстве имен
Использование функторов с параметрами обычно выглядит так: // Definition: struct some_functor_with_params { int ref; explicit some_functor_with_params(int ref) : ref(ref) {} bool operator ()(int i) const {return i == ref;} }; // Usage: std::vector&l…
28 июн '17 в 16:12
3
ответа
Внешняя связь для имени в безымянном пространстве имен
Согласно пункту 3.5/4 стандарта C++: Пространство имен без имени или пространство имен, объявленное прямо или косвенно в пространстве имен без имени, имеет внутреннюю связь. Одновременно в пункте 7.3.1.1 мы имеем примечание 96): Хотя сущности в безы…
09 фев '16 в 09:54
1
ответ
Могу ли я использовать безымянные пространства имен вместо статических переменных внутри функций?
Я просмотрел все соответствующие вопросы о безымянных пространствах имен, но не могу понять, можно ли их использовать для замены static переменная в этом контексте: returnType dummyfun () { static int staticInt; // do something... };
30 июл '14 в 11:09
1
ответ
Является ли статическое устаревание при обеспечении доступности между единицами перевода?
Из следующего ответа stackru пользователь говорит: Это означает, что переменная является локальной для единицы перевода (проще говоря, для одного исходного файла) и недоступна извне. Такое использование статического кода фактически не рекомендуется …
07 дек '15 в 17:44