The most vexing parse is a syntactic ambiguity resolution in C++. In certain situations, the C++ grammar cannot distinguish between the creation of an object parameter and specification of a function's type. In those situations, the compiler is required to interpret the line as a function type specification.
```
#include <iostream>
using namespace std;
struct X {
X() { }
};
struct Y {
Y(const X &x) { }
};
int main() {
// a function y1, returning an object of type Y,
// taking a function (with no arguments, returning an object of type X) as its argument.
Y y1(X());
// a variable definition
Y y2(X{});
}
```