分别用于打开和关闭namespace
的两个宏的众多示例之一是/usr/include/boost/hana/transform.hpp
:
BOOST_HANA_NAMESPACE_BEGIN
// stuff
BOOST_HANA_NAMESPACE_END
这些宏在/usr/include/boost/hana/config.hpp
中定义如下:
#define BOOST_HANA_NAMESPACE_BEGIN namespace boost { namespace hana {
#define BOOST_HANA_NAMESPACE_END }}
这样做的好处是什么?
(考虑到至少有一个缺点:它使namespace
s的开始和结束之间来回跳跃变得更加困难)
这最初是为了向前兼容使用内联名称空间,但这从未成为相关的。我重新打开https://github.com/boostorg/hana/issues/288并将其更改为正常的命名空间声明。