8

C++11 has a feature called "inline namespaces", which allows authors to enforce ABI compatibility at link time without tampering with the API. For instance, these helpful answers from @HowardHinnant explain how libc++ uses inline namespaces:

My question is: Does boost make use of this C++11 feature? It looks like some boost devs were at least thinking of eventually using it at one point. But that thread is pretty old. Did it ever happen? If so, does apply to all boost libraries, or only a subset?

4

1 回答 1

5

一些图书馆已经开始使用它,但不是全部。例如,这是在 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
于 2014-08-11T18:22:38.743 回答