如果我在名称空间栏中有一个 Foo 类:
namespace bar
{
class Foo { ... }
};
然后我可以:
using Baz = bar::Foo;
现在它就像我在名称空间中用名称 Baz 定义的类一样。
对函数也可以这样做吗?
namespace bar
{
void f();
}
然后:
using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
最干净的方法是什么?
该解决方案还应该适用于模板函数。
定义: 如果某个实体 B 是 A 的 化名,那么如果 A 的任何或所有用法(当然不是声明或定义)在源代码中被 B 替换,那么生成的代码与(剥离的)代码保持不变。例如,typedef A B
是一个别名。#define B A
是一个别名(至少)。T& B = A
不是别名,B 可以有效地实现为间接指针,其中“未别名”的 A 可以使用“即时语义”。