// PR c++/79817 - attribute deprecated on namespace. // { dg-do compile { target c++11 } } namespace [[deprecated]] N { struct S { }; using T = int; const int value = 42; int arr[10]; } namespace [[deprecated]] Y { int x; int i = x; } namespace [[deprecated]] M { namespace M2 { } } enum E { F = N::value }; // { dg-warning ".N. is deprecated" } template // { dg-warning ".N. is deprecated" } struct X { }; N::T foo(); // { dg-warning ".N. is deprecated" } void g(N::T p) // { dg-warning ".N. is deprecated" } { N::S s; // { dg-warning ".N. is deprecated" } N::arr[0] = 42; // { dg-warning ".N. is deprecated" } } namespace Z = Y; // { dg-warning ".Y. is deprecated" } namespace Z2 = M::M2; // { dg-warning ".M. is deprecated" } void g2 () { using namespace Y; // { dg-warning ".Y. is deprecated" } using namespace M::M2; // { dg-warning ".M. is deprecated" } using TT = N::T; // { dg-warning ".N. is deprecated" } using N::T; // { dg-warning ".N. is deprecated" } }