是否有特别好的理由选择使用精心设计的类型说明符?例如,在某些情况下,需要使用template或typename关键字来消除依赖关系template或类型的歧义.
但我想不出任何例子,如枚举这样的事情.请使用以下代码示例:
enum Foo { A, B };
void bar(Foo foo);
void baz(enum Foo foo);
Run Code Online (Sandbox Code Playgroud)
为什么我可以选择使用baz()提供的语法bar()(反之亦然)?有什么含糊不清的案子吗?
没有理由使用这样的说明符,除非您正在处理名称被不同"种类"的名称隐藏的情况.例如,声明一个以Foo枚举声明命名的变量是完全合法的,因为,非正式地说,对象名称和类型名称存在于独立的"命名空间"中(更多正式规范见3.3/4)
enum Foo { A, B };
int Foo;
Run Code Online (Sandbox Code Playgroud)
在之后int Foo的声明,你的bar声明将会无效,而更详细的baz声明仍然有效.
| 归档时间: |
|
| 查看次数: |
3530 次 |
| 最近记录: |