1 // PR c++/84222
2 // { dg-do compile }
3 
4 struct __attribute__((deprecated)) C {		// { dg-message "declared here" }
CC5   C () {}
6   C (const C &);				// { dg-bogus "'C' is deprecated" }
CC7   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
foo(const C & x,const C & y)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
bar(const C & x,const C & y)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" }
DD25   D () {}
26   D (const D &);				// { dg-bogus "is deprecated" }
DD27   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
foo(const D & x,const D & y)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
bar(const D<N> & x,const D<N> & y)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 }
45