Viewing file: Wvexing-parse.C (2.79 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/25814 // { dg-do compile } // Test -Wvexing-parse.
struct T { };
struct X { X(); };
struct S { S(int); S foo (int (int)); S(T); int m; };
struct W { W(); W(X, X); int m; };
int g; int g1(int(g)); int g2(int()); void fg(int);
void fn1 (double (a)) { extern int f0(); extern int f1(int(a)); int f2(int(a)); // { dg-warning "parentheses were disambiguated as a function declaration" } int (*f3)(int(a)); int f4(int a); int f5(int()); // { dg-warning "parentheses were disambiguated as a function declaration" } int f6(...); int f7((int(a))); int (f8); int f9(S(s)); // { dg-warning "parentheses were disambiguated as a function declaration" } int(f10) __attribute__(()); int(f11(int())); if (int(a) = 1) { } int j, k, l(); // { dg-warning "empty parentheses were disambiguated as a function declaration" } int m, f12(int(j)); // { dg-warning "parentheses were disambiguated as a function declaration" }
T t1(); // { dg-warning "empty parentheses were disambiguated as a function declaration" } T t2(T()); // { dg-warning "parentheses were disambiguated as a function declaration" } /* Declares a variable t3. */ T(t3); T t4(), // { dg-warning "empty parentheses were disambiguated as a function declaration" } t5(); // { dg-warning "empty parentheses were disambiguated as a function declaration" }
extern S s1(int(a)); S s2(int(a)); // { dg-warning "parentheses were disambiguated as a function declaration" } S s3(int a); S s4(int()); // { dg-warning "parentheses were disambiguated as a function declaration" } S s5(int(int)); // { dg-warning "parentheses were disambiguated as a function declaration" } S s6(...); S s7((int(a))); S s8((int)a); S s9 = int(a); S(T()); S s10(S()); // { dg-warning "parentheses were disambiguated as a function declaration" } S s11(T()); S s12(X()); // { dg-warning "parentheses were disambiguated as a function declaration" } S s13 = S(T()); S(T()).foo(0); S (S::*foo)(int (int)); S(*s14)(int(a)); S s15(); // { dg-warning "empty parentheses were disambiguated as a function declaration" } S s16(void);
/* Don't warn here. */ void fv1(int(a)); void fv2(int()); void (fv3)(); void (fv4)(void); void (fv5)(int);
int n(); // { dg-warning "empty parentheses were disambiguated as a function declaration" } int (n2)(); // { dg-warning "empty parentheses were disambiguated as a function declaration" } int n3(void);
typedef int F(const char*); typedef int F2(); typedef int F3() const; typedef int F4(int(a)) const;
W w(X(), X()); // { dg-warning "parentheses were disambiguated as a function declaration" } }
struct C1 { C1(int); };
struct C2 { C2(C1, int); };
template<int N> int value() { return N; }
void fn2 () { int i = 0; C2 c2(C1(int(i)), i); C1(value<0>()); }
|