he C++ literature uses the phrase "most vexing parse" to denote one of the dark syntactic alleys of C++. It's vexing because programmers usually don't even know it exists; they assume that their code creates an object initialized with a temporary, whereas the compiler interprets that same code as no less than a function declaration. This 10-Minute Solution explains where and why that parse problem happens, and presents two simple techniques to avert it.
You define an object whose initializer is a temporary, but the compiler unexpectedly interprets the code as a function declaration.
Rewrite your code so that it avoids the most vexing parse problem.