Описание тега inline-namespaces

Inline namespaces are a C++11 feature designed to support library versioning.
1 ответ

В поисках разъяснений по встроенному пространству имен

В cppreference, следующий текст найден: Каждый член встроенного пространства имен может быть частично специализированным, явно реализованным или явно специализированным, как если бы он был членом окружающего пространства имен. Примечание: правило о …
30 апр '18 в 00:47
1 ответ

Использует ли Boost C++11 "встроенные пространства имен", чтобы избежать ошибок несовместимости ABI во время выполнения?

C++11 имеет функцию, называемую "встроенными пространствами имен", которая позволяет авторам обеспечивать совместимость ABI во время соединения без вмешательства в API. Например, эти полезные ответы от @HowardHinnant объясняют, как libc++ использует…
11 авг '14 в 15:37
3 ответа

Как сделать статический анализ Coverity совместимым со стандартом C++0x?

Я использую Wind River Compiler 4 (gcc (C) и g++ (C++)), и он без проблем компилирует все мои проекты. Теперь я должен использовать статический анализ Coverity для проверки моего кода. Я настроил конкретные компиляторы. Для C-кода (gcc) проблем нет,…
1 ответ

Почему range-v3 помещает свои функциональные объекты во встроенное пространство имен?

В range-v3 все функции являются действительно глобальными объектами функций во встроенном пространстве имен: #if RANGES_CXX_INLINE_VARIABLES < RANGES_CXX_INLINE_VARIABLES_17 #define RANGES_INLINE_VARIABLE(type, name) \ inline namespace function_o…
24 апр '18 в 20:13
2 ответа

Техника встроенного пространства имен для управления специфичным для платформы кодом в C++

Я видел использование макросов #ifdef (пример библиотеки Eigen) для управления платформой, но не видел ни одного, использующего "встроенные пространства имен" для управления кодом, специфичным для платформы. В репозитории github приведен конкретный …
22 янв '16 в 00:54
2 ответа

Неоднозначная ссылка на пространство имен во встроенном пространстве имен

Предположим, следующий код: namespace test { namespace detail { } inline namespace v1 { namespace detail { void foo() { } } } } int main() { test::detail::foo(); } Как мы видим, этот код компилируется с помощью Clang; не с GCC, однако - GCC жалуется…
21 авг '14 в 21:04
1 ответ

Встроенная эмуляция пространства имен для MSVC (10.0/11.0)

Есть ли способ подражать inline namespace с MSVC? LibC++ от LLVM использует это для создания скрытого версионного пространства имен, например: #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { #define _LIBCPP_EN…
1 ответ

Какова цель этого пространства имен?

В Boost 1.55, current_function.hpp читает что-то вроде этого: namespace boost { namespace detail { inline void current_function_helper() { #if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) &&a…
1 ответ

В чем преимущество std::literals::.. встроенных пространств имен?

В стандарте C++ (например, N4594) есть два определения operator""s: namespace std { ... inline namespace literals { inline namespace chrono_literals { // 20.15.5.8, suffixes for duration literals constexpr chrono::seconds operator"" (unsiged long lo…
21 авг '16 в 14:21
2 ответа

Почему встроенные безымянные пространства имен?

Быстрый для гуру: C++11 позволяет объявлять безымянные пространства имен inline, Это кажется излишним для меня; вещи, объявленные в безымянном пространстве имен, уже используются так, как если бы они были объявлены во вложенном пространстве имен. Ит…
26 ноя '13 в 04:35
3 ответа

Как я могу явно ссылаться на вмещающее пространство имен, когда существует встроенное пространство имен?

Пожалуйста, рассмотрите этот код: #include <iostream> namespace Foo{ void ool() // Version A { std::cout << "Foo::ool" << std::endl; } inline namespace Bar{ void ool() // Version B { std::cout << "Foo::Bar::ool" << std:…
25 авг '15 в 08:29
6 ответов

Для чего нужны встроенные пространства имен?

C++11 позволяет inline namespaces, все члены которого также автоматически вмещаются namespace, Я не могу придумать какое-либо полезное применение этого - может кто-нибудь дать краткий, краткий пример ситуации, когда inline namespace нужен и где это …
13 июн '12 в 13:46
1 ответ

Использование типа из встроенного пространства имен в файле cpp не работает в MSVS

У меня есть две версии структуры Error в моей библиотеке, поэтому я хочу использовать встроенные пространства имен для управления версиями. #pragma once #include <string> namespace core { inline namespace v2 { struct Error { // <-- new vers…
15 мар '19 в 11:28
2 ответа

использование "нескольких" пространств имен однострочное

Есть ли упрощенный способ включить больше пространств имен вместо того, чтобы каждый раз вводить одно и то же. Это очень раздражает, особенно в файлах.h. Например: Вместо того, чтобы писать: int f() { using namespace blabla1; using namespace blabla2…
13 май '20 в 16:45
1 ответ

Определение вложенного пространства имен, когда включающее пространство имен является встроенным

Рассмотрим следующую демонстрационную программу #include <iostream> inline namespace A { } namespace A:: inline B { void f() { std::cout << "Hello nested namespace definition.\n"; } } int main() { f(); return 0; } Результат компиляции пр…
1 ответ

не-встроенное пространство имен не может быть повторно открыто как встроенное

У меня возникла проблема с пониманием жалобы компилятора: namespace { } inline namespace { } gcc говорит встроенное пространство имен должно быть указано при первоначальном определении и MSVC говорит, что в заголовке. Мое замешательство вызвано моим…
10 июн '20 в 09:51
0 ответов

Как отключить заполнение включающих пространств имен встроенными пространствами имен c ++ в doxygen

Есть ли способ отключить добавление встроенных пространств имен к их пространствам имен в doxygen? Fe Выполняя с ванильным Doxy-файлом, созданным с помощью мастера, создается следующий список классов Я ищу способ отключить library ::v2:: foo из спис…
08 апр '21 в 00:18
1 ответ

Как я могу получить доступ к функции C++, если встроенное пространство имен имеет ту же функцию?

Следующая ситуация: namespace abc{ inline namespace x{ int f() { return 5; } } inline namespace y{ int f() { return 6; } } int f() { return 7; } void g(){ x::f(); // okay y::f(); // okay f(); // error: ambiguous! abc::f(); // error: ambiguous! } } G…
25 апр '23 в 22:29
0 ответов

Почему невстроенные пространства имен не подходят для управления версиями библиотек?

В этом ответе на этот вопрос Для чего нужны встроенные пространства имен?, встроенные пространства имен называются механизмом управления версиями библиотеки. Я понимаю общий подход, упомянутый в ответах, с использованием встроенного пространства име…
23 окт '23 в 10:32