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

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

Мой вопрос: использует ли boost эту функцию C++11? Похоже, что некоторые разработчики Boost хотя бы думали о том, чтобы использовать его в какой-то момент. Но эта нить довольно старая. Это когда-нибудь случалось? Если да, относится ли это ко всем библиотекам наддува или только к подмножеству?

1 ответ

Решение

Некоторые библиотеки начали его использовать, но не все. Например, это в Boost.Log:

//! NOTE: I've reformatted this to look cleaner.
#if !defined(BOOST_NO_CXX11_INLINE_NAMESPACES)
    inline namespace BOOST_LOG_VERSION_NAMESPACE {}
    [snip]
#endif
Другие вопросы по тегам