我从教科书中得到了以下代码:
namespace sally {
void message( ) {
std::cout << "Hello from Sally.\n";
}
}
namespace {
void message( ) {
std::cout << "Hello from unnamed.\n";
}
}
int main( ) {
message();
{
message( );
using sally::message;
message( );
}
return 0;
}
代码
using sally::message;
将对函数message()
的默认调用更改为来自命名空间sally
的调用。如果我想从未命名的命名空间调用 message()
,我确实知道我可以使用 ::message()
。
但是是否可以将对
message()
(在范围内)的默认调用更改回未命名命名空间中的函数?
您可以将
(anonymous)::message
与using ::message;
单独带入:
int main( ) {
message();
{
message( );
using sally::message;
message( );
{
using ::message;
message( ); // Lookup finds `::message` (introduced above) and stops looking in outer block scopes
}
}
return 0;
}
它必须位于新的块作用域中,因为如果它位于同一作用域中,
message()
将会不明确。