Описание тега 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) проблем нет,…
19 янв '12 в 14:56
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…
12 окт '11 в 15:30
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…
03 ноя '14 в 19:15
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; } Результат компиляции пр…
23 апр '20 в 22:29
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