131
|
1 // PR c++/84222
|
|
2 // { dg-do compile }
|
|
3
|
|
4 struct __attribute__((deprecated)) C { // { dg-message "declared here" }
|
|
5 C () {}
|
|
6 C (const C &); // { dg-bogus "'C' is deprecated" }
|
|
7 C (const C &x, const C &y) { C z = x; } // { dg-bogus "'C' is deprecated" }
|
|
8 void foo (const C &x, const C &y); // { dg-bogus "'C' is deprecated" }
|
|
9 };
|
|
10
|
|
11 void
|
|
12 C::foo (const C &x, const C &y) // { dg-bogus "'C' is deprecated" }
|
|
13 {
|
|
14 C z = x; // { dg-bogus "'C' is deprecated" }
|
|
15 }
|
|
16
|
|
17 void
|
|
18 bar (const C &x, const C &y) // { dg-warning "'C' is deprecated" }
|
|
19 {
|
|
20 C z = x; // { dg-warning "'C' is deprecated" }
|
|
21 }
|
|
22
|
|
23 template <int N>
|
|
24 struct __attribute__((deprecated)) D { // { dg-message "declared here" }
|
|
25 D () {}
|
|
26 D (const D &); // { dg-bogus "is deprecated" }
|
|
27 D (const D &x, const D &y) { D z = x; } // { dg-bogus "is deprecated" }
|
|
28 void foo (const D &x, const D &y); // { dg-bogus "is deprecated" }
|
|
29 };
|
|
30
|
|
31 template <int N>
|
|
32 void
|
|
33 D<N>::foo // { dg-bogus "is deprecated" "" { xfail *-*-* } }
|
|
34 (const D &x, const D &y) // { dg-bogus "is deprecated" }
|
|
35 {
|
|
36 D z = x; // { dg-bogus "is deprecated" }
|
|
37 }
|
|
38
|
|
39 template <int N>
|
|
40 void
|
|
41 bar (const D<N> &x, const D<N> &y) // { dg-warning "is deprecated" }
|
|
42 {
|
|
43 D<N> z = x; // { dg-warning "is deprecated" }
|
|
44 }
|