分类: C/C++
2011-07-25 20:53:43
One interesting aspect of using directives is that they make the names of a namespace available, but as if they were declared at *global* scope, not necessarily at the scope in which the using directive occurs. Local names will hide namespace names.
所以fun1中名字vector只有一个可见的声明,就是那个int类型的变量。std名字空间中的模板类声明被隐藏了。所以试图用vector声明一个向量会出错。
在fun2中,using declaration的作用等于是在同样的位置,同样的作用域内声明了这个名字,因此试图在同一作用域内声明一个名叫vector的int类型变量的时候,会出现“重复声明”错误。