111
|
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 "" }
|