为什么 Boost.Hana 对 opening/closing 命名空间使用宏?
Why does Boost.Hana use macros for opening/closing namespaces?
分别使用两个宏来打开和关闭 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
秒的开头和结尾来回跳转变得更加困难。)
这最初是为了与使用内联命名空间的向前兼容,但这从未变得相关。我重新打开 https://github.com/boostorg/hana/issues/288 并将其更改为正常的命名空间声明。
分别使用两个宏来打开和关闭 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
秒的开头和结尾来回跳转变得更加困难。)
这最初是为了与使用内联命名空间的向前兼容,但这从未变得相关。我重新打开 https://github.com/boostorg/hana/issues/288 并将其更改为正常的命名空间声明。