...
Syntactically ambiguous declarations can lead to unexpected program execution. However, it is likely that rudimentary testing would uncover violations of this rule.
Rule | Severity | Likelihood |
|---|
Detectable | Repairable | Priority | Level |
|---|---|---|---|
DCL53-CPP | Low | Unlikely | Yes |
No | P2 | L3 |
Automated Detection
Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| CodeSonar |
| LANG.STRUCT.DECL.FNEST | Nested Function Declaration | ||||||
| Helix QAC |
| C++1109, C++2510 | |||||||
| Klocwork |
| CERT.DCL.AMBIGUOUS_DECL | |||||||
| LDRA tool suite |
| 296 S | Partially implemented |
| Parasoft C/C++test |
|
2510
| CERT_CPP-DCL53-a | Parameter names in function declarations should not be enclosed in parentheses | |||||||
| Polyspace Bug Finder |
| CERT C++: DCL53-CPP | Checks for declarations that can be confused between:
Rule fully covered. | ||||||
| Clang |
| -Wvexing-parse |
| SonarQube C/C++ Plugin |
| S3468 |
Related Vulnerabilities
Search for other vulnerabilities resulting from the violation of this rule on the CERT website.
Bibliography
| [ISO/IEC 14882-2014] | Subclause 6.8, "Ambiguity Resolution" Subclause 8.2, "Ambiguity Resolution" |
| [Meyers 2001] | Item 6, "Be Alert for C++'s Most Vexing Parse" |
...
...