How to create an object in a form like this: ifstream in();

This line of code can probably trigger a vexing (but not “the most vexing”) parse behavior: instead of being interpreted as a variable declaration, it will be interpreted as the declaration of a function named object_name, taking no parameters and returning a value of type class_name.

See it happen on GodBolt: The compiler tells you:

<source>: In function 'void foo()':
<source>:4:27: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
    4 |     class_name object_name();
      |               

Leave a Comment