C++ 什么';领导的目的是什么&引用;在C++;方法调用

C++ 什么';领导的目的是什么&引用;在C++;方法调用,c++,boost,C++,Boost,我一直在使用Boost库,在Boost.Exception中,我注意到如下代码: #define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x) 出于好奇:在boost::throw_exception(x)之前,前面的:引用根命名空间的目的是什么。如果您的类或命名空间使用的名称也存在于根中,但在某些时候您希望引用根版本,则这通常非常有用 例如,如果我在类中重载了new,但希望在某个时候引用默认的(root)new,那么我将使用::ne

我一直在使用Boost库,在Boost.Exception中,我注意到如下代码:

#define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)

出于好奇:在
boost::throw_exception(x)
之前,前面的
引用根命名空间的目的是什么。如果您的类或命名空间使用的名称也存在于根中,但在某些时候您希望引用根版本,则这通常非常有用


例如,如果我在类中重载了
new
,但希望在某个时候引用默认的(root)
new
,那么我将使用
::new
引用root new。

指示这是顶级名称空间

它与目录名的工作方式非常相似(但不完全相同)。如果没有前面的双冒号,C++将首先检查在当前的“活动”命名空间内是否有该名称的命名空间。如果没有,它将在顶层检查名称的名称空间

使用领先的双冒号,C++将跳过第一个检查,只查找顶级命名空间。