从嵌套命名空间注入类型:Typedef或使用?

我有一个大型的软件框架,目前生活在一个通用的命名空间。最近,我将一些类移入嵌套的名称空间,但为了暂时保持向后兼容性,我需要将名称保留在全局名称空间中。到目前为止,我使用using:从嵌套命名空间注入类型:Typedef或使用?

namespace framework { 

namespace IO {

struct IStream;

}

#if COMPATIBILITY

using IO::IStream;

#endif

}

但是,我同样可以使用typedef IO::IStream IStream;。使用typedef而不是using有什么优势/劣势?

回答:

它们有些不同:typedef引入了一个新类型名称framework::IStream,而using指令只影响它所在范围内的名称查找。 (这有额外的效果,如果你要定义一个独立的,真正的类型framework::IStream,但因为你不这样做,这不是一个问题。)

在这个意义上我会说,using是一个实现细节,它比通过引入新类型名称而产生的全局语义变化更可取。因此,如果您可以避开它,请在需要的范围内使用using指令,然后逐渐将这些指令迁移到新系统。

以上是 从嵌套命名空间注入类型:Typedef或使用? 的全部内容, 来源链接: utcz.com/qa/258665.html

回到顶部