强制将最令人烦恼的解析的歧义消除为函数声明
Force disambiguation of most vexing parse to be function declaration
我在"最麻烦的解析"上看到的所有讨论都讨论了如何强制编译器将case视为带有初始值设定项的变量声明(而不是将实际解释视为函数声明)。例如,请参阅这个stackoverflow线程和Ask Coder的这篇文章。
我的团队有一条规则:强迫尽可能多的警告成为错误。目标是防止cruft潜入代码;成功的编译应该是静默的,禁用警告会导致灾难。这一切都很好,除了我被Most Vexing Parse在一个声明上咬了一口,这个声明实际上是按照我想要的方式解析的。
具体而言:
int some_function();
正如Ask Coder的文章中所示,这个代码片段确实触发了clang中的Most Vexing Parse警告,然后我们将其转换为一个错误,这让我大吃一惊。
在这里的语法中,我能做些什么吗?让它(a)成为一个合法的C声明(不仅仅是C++)和(b)不触发Most Vexing Parse警告?还是我必须跳#pragma舞,让这行代码周围的警告静音?
它能像一样简单吗
int some_function(void);
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 构造对象的歧义
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 使用声明解决歧义
- C++中成员名称查找和访问声明中的歧义
- 了解函数错误的歧义新声明
- 在size_t的声明中解决歧义
- 强制将最令人烦恼的解析的歧义消除为函数声明
- C++11参数子句中声明符和抽象声明符之间的歧义
- 当我在类中声明一个固定长度的向量时,我能避免歧义吗?
- GCC声明友元函数是重载的,有歧义调用,clang编译
- 使用声明和歧义声明的上下文
- c++0x:解决函数定义后接空声明和简单声明之间的歧义
- 由于模板函数声明中存在歧义而导致错误
- 错误:对旧声明“double-round(double)”存在歧义