...
| Code Block | ||
|---|---|---|
  | ||
Widget constructed
 Gadget constructed
Widget constructed 
Gadget constructed
3 | 
...
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" | 
...
...