// PR c++/25814
// { dg-do compile { target c++98_only } }
// { dg-additional-options "-fdiagnostics-show-caret" }
// Test -Wvexing-parse's fix-it hints in C++98.
struct X { };
struct T {
  T(X);
  int m;
};
struct U {
  U();
  int m;
};
int
main ()
{
  T t(X()); // { dg-warning "6:parentheses were disambiguated as a function declaration" }
  /* { dg-begin-multiline-output "" }
   T t(X());
      ^~~~~
     { dg-end-multiline-output "" } */
  // { dg-message "6:add parentheses to declare a variable" "" { target *-*-* } 21 }
  /* { dg-begin-multiline-output "" }
   T t(X());
      ^~~~~
       (  )
     { dg-end-multiline-output "" } */
  int n(   ); // { dg-warning "8:empty parentheses were disambiguated as a function declaration" }
  /* { dg-begin-multiline-output "" }
   int n(   );
        ^~~~~
     { dg-end-multiline-output "" } */
  // { dg-message "8:remove parentheses to default-initialize a variable" "" { target *-*-* } 33 }
  /* { dg-begin-multiline-output "" }
   int n(   );
        ^~~~~
        -----
     { dg-end-multiline-output "" } */
  T y(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
  /* { dg-begin-multiline-output "" }
   T y();
      ^~
     { dg-end-multiline-output "" } */
  X x(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
  /* { dg-begin-multiline-output "" }
   X x();
      ^~
     { dg-end-multiline-output "" } */
  // { dg-message "6:remove parentheses to default-initialize a variable" "" { target *-*-* } 51 }
  /* { dg-begin-multiline-output "" }
   X x();
      ^~
      --
     { dg-end-multiline-output "" } */
  U u(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
  /* { dg-begin-multiline-output "" }
   U u();
      ^~
     { dg-end-multiline-output "" } */
  // { dg-message "6:remove parentheses to default-initialize a variable" "" { target *-*-* } 63 }
  /* { dg-begin-multiline-output "" }
   U u();
      ^~
      --
     { dg-end-multiline-output "" } */
}