为什么 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 }}

这样做有什么好处?

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...