1 // PR c++/79817 - attribute deprecated on namespace. 2 // { dg-do compile { target c++11 } } 3 4 namespace [[deprecated]] N { 5 struct S { }; 6 using T = int; 7 const int value = 42; 8 int arr[10]; 9 } 10 11 namespace [[deprecated]] Y { 12 int x; 13 int i = x; 14 } 15 16 namespace [[deprecated]] M { 17 namespace M2 { 18 } 19 } 20 21 enum E { F = N::value }; // { dg-warning ".N. is deprecated" } 22 23 template<N::T> // { dg-warning ".N. is deprecated" } 24 struct X { }; 25 26 N::T foo(); // { dg-warning ".N. is deprecated" } 27 28 void g(N::T p)29g(N::T p) // { dg-warning ".N. is deprecated" } 30 { 31 N::S s; // { dg-warning ".N. is deprecated" } 32 N::arr[0] = 42; // { dg-warning ".N. is deprecated" } 33 } 34 35 namespace Z = Y; // { dg-warning ".Y. is deprecated" } 36 namespace Z2 = M::M2; // { dg-warning ".M. is deprecated" } 37 38 void g2()39g2 () 40 { 41 using namespace Y; // { dg-warning ".Y. is deprecated" } 42 using namespace M::M2; // { dg-warning ".M. is deprecated" } 43 using TT = N::T; // { dg-warning ".N. is deprecated" } 44 using N::T; // { dg-warning ".N. is deprecated" } 45 } 46