【发布时间】:2016-09-20 20:57:58
【问题描述】:
假设我有一个在全局范围内具有"C" 链接的函数。
extern "C" int fun(int);
如果我想让它在命名空间中可见,我会这样做:
namespace foo {
using ::fun;
}
但在此之后,除了foo::fun(0) 之外,我仍然可以将其称为::fun(0)。
所以我的问题是,有没有办法禁止从全局命名空间调用函数 fun,而只允许从 namespace foo 调用它?
【问题讨论】:
-
不,那不可能
-
无回收。
-
你可以尝试在命名空间中包含 c 标头。
-
a little magic 一切皆有可能(参见上一个链接 vs this)。
标签: c++ c++11 namespaces