| // PR c++/52748 |
| // N3276 |
| // { dg-do compile { target c++11 } } |
| |
| struct A; // { dg-message "forward declaration" } |
| A f(); |
| |
| decltype(f()) g1(); // OK |
| decltype(((f()))) g2b(); // OK |
| decltype(42,f()) g3(); // OK |
| decltype(42,45,f()) g3b(); // OK |
| decltype(42,45,(f())) g3c(); // OK |
| decltype(42,((45,(f())))) g3c(); // OK |
| |
| decltype(f(),42) g4(); // { dg-error "" } |
| decltype(45,f(),42) g4b(); // { dg-error "" } |
| |
| class B |
| { |
| ~B(); // { dg-message "private" } |
| public: |
| int i; |
| void operator[](int); |
| }; |
| B h(); |
| |
| void i(const B&); |
| |
| decltype(h()) g5a(); // OK |
| decltype(h().i) g5(); // { dg-error "" } |
| decltype(h()[0]) g6(); // { dg-error "" } |
| decltype(i(h())) g7(); // { dg-error "" } |