为什么Boost.Hana使用宏打开/关闭名称空间?



分别用于打开和关闭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 }}

这样做的好处是什么?

(考虑到至少有一个缺点:它使namespaces的开始和结束之间来回跳跃变得更加困难)

这最初是为了向前兼容使用内联名称空间,但这从未成为相关的。我重新打开https://github.com/boostorg/hana/issues/288并将其更改为正常的命名空间声明。

最新更新