The deprecated attribute allows marking an entity deprecated, which makes it still legal to use but puts users on notice that use is discouraged and may cause a warning message to be printed during compilation. An optional string literal can appear as the argument of deprecated, to explain the rationale for deprecation and/or to suggest a replacement.
deprecated
[[deprecated]] int f(); [[deprecated("g() is thread-unsafe. Use h() instead")]] void g( int& x ); void h( int& x ); void test() { int a = f(); // warning: 'f' is deprecated g(a); // warning: 'g' is deprecated: g() is thread-unsafe. Use h() instead }