Most vexing parse

The most vexing parse is a counterintuitive form of syntactic ambiguity resolution in the C++ programming language.

In certain situations, the C++ grammar cannot distinguish between the creation of an object parameter and specification of a function's type.

[2] A simple example appears when a functional cast is intended to convert an expression for initializing a variable: Line 2 above is ambiguous.

[4][5] Function types in C++ are usually hidden behind typedefs and typically have an explicit reference or pointer qualifier.

To force the alternate interpretation, the typical technique is a different object creation or conversion syntax.