是否可以将函数导入命名空间,但不能导出它?

Jas*_*onN 7 c++

是否可以将函数(或其他符号)导入命名空间但不导出它?例如,我想导入std::string当前的命名空间,但我不想current::string显示.

namespace current {
  using std::string;
  string func();
}
Run Code Online (Sandbox Code Playgroud)

current::string 不应该是一件事.

用例只是减少打字(并且不断忘记std::string其他)并使代码更清晰,而不会使所有命名空间语法混乱代码.

Jan*_*ans 5

是否可以将函数(或其他符号)导入命名空间但不导出它?

没有.

一个using指令将引入所有引用请在声明中使用的名称符号,他们将看到的用户current,好像他们是在命名空间本身实际上声明.

该标准的相关部分是[namespace.udir]/1:

using-directive指定指定命名空间中的名称可以在using-directive出现在using-directive之后的范围内使用.在非限定名称查找(6.4.1)期间,名称看起来好像是在最近的封闭命名空间中声明的,其中包含using-directive和指定的命名空间.[注意:在此上下文中,"包含"表示"直接或间接包含". - 结束说明]