【发布时间】:2012-06-05 18:07:35
【问题描述】:
选择使用详细类型说明符有什么特别好的理由吗?例如,在某些情况下,需要使用template 或typename 关键字来消除依赖template 或类型的歧义。
但我想不出任何例子会发生这种情况,例如枚举。以如下代码为例:
enum Foo { A, B };
void bar(Foo foo);
void baz(enum Foo foo);
为什么我可以选择使用baz() 提供的语法而不是bar()(反之亦然)?有什么模棱两可的情况吗?
【问题讨论】:
-
baz 语法不只是旧 C 风格的遗留物,你没有对枚举进行类型定义,所以你必须明确地将其称为枚举?就像你如何使用 struct Foo f;如果您没有对结构进行类型定义?在 C++ 中,typedef 隐含在 enum/struct 声明中,因此您不必声明类型是 enum/struct 可能吗?
-
在标准中,前向声明使用详细的类型说明符。
-
template和typename不是详细类型说明符的一部分。
标签: c++ coding-style