1 // PR c++/52748 2 // N3276 3 // { dg-do compile { target c++11 } } 4 5 struct A; // { dg-message "forward declaration" } 6 A f(); 7 8 decltype(f()) g1(); // OK 9 decltype(((f()))) g2b(); // OK 10 decltype(42,f()) g3(); // OK 11 decltype(42,45,f()) g3b(); // OK 12 decltype(42,45,(f())) g3c(); // OK 13 decltype(42,((45,(f())))) g3c(); // OK 14 15 decltype(f(),42) g4(); // { dg-error "" } 16 decltype(45,f(),42) g4b(); // { dg-error "" } 17 18 class B 19 { 20 ~B(); // { dg-message "private" } 21 public: 22 int i; 23 void operator[](int); 24 }; 25 B h(); 26 27 void i(const B&); 28 29 decltype(h()) g5a(); // OK 30 decltype(h().i) g5(); // { dg-error "" } 31 decltype(h()[0]) g6(); // { dg-error "" } 32 decltype(i(h())) g7(); // { dg-error "" } 33