我经常发现自己想要一种方法来撤消using语句的效果或包含所有命名空间(例如std)但排除一些要替换的位(例如cout).出于某种原因,这是不可能的.我想知道是否有人知道为什么决定不将这种能力添加到语言中?有一些技术原因吗?我认为它不仅仅是被遗忘,因为它似乎也不适用于C++ 0x.
只是为了澄清,我不是在寻找解决方法,因为谷歌可以告诉我这些.我正在寻找一个解释为什么这是不可能的,以及为什么不考虑(据我所知)包含在0x中.
Jam*_*lis 11
一个使用指令带来的姓名或名称设置成一个给定的范围内声明.
你不能因为你不能说的原因而"不使用"
int x = 42;
// and later
[remove name x somehow]
Run Code Online (Sandbox Code Playgroud)
无论C++中的名称来自何处,都无法在范围内取消引入名称.
鉴于它会使名称查找过于复杂(因为名称可以同时添加和删除范围),除非有一个非常引人注目的用例,否则它不太可能被视为潜在的语言功能.