use-declarations是静态的吗?

Ete*_*nal 1 c++ using-directives

我对使用声明有点困惑.我理解using foo::bar;将符号bar从命名空间foo导入当前命名空间,但这是静态还是动态发生的?

更具体地说,使用声明会导致开销吗?是否可以根据条件导入具有相同名称的不同符号?(这将是不好的做法,但我很好奇所有相同)

感觉它应该是静态的,但我找不到任何东西来证实这一点......

izo*_*ica 8

命名空间解析在编译时发生.您无法在运行时动态更改它们.

根据条件导入不同符号的一种方法是使用预处理程序指令和宏:

#ifdef USEA
using a::f;
#else
using b::f;
#endif
Run Code Online (Sandbox Code Playgroud)