首页 > 解决方案 > 为什么 Boost.Hana 使用宏来打开/关闭命名空间?

问题描述

分别用于打开和关闭 a 的两个宏的众多示例之一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 }}

这样做有什么好处?

(考虑到至少有一个缺点:从 s 的开头到结尾来回跳转变得更加困难namespace。)

标签: c++boostmacrosnamespacesboost-hana

解决方案


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


推荐阅读