Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      C++ attribute: deprecated(since C++14)

      From cppreference.com
      <cpp‎ |language‎ |attributes
       
       
      C++ language
      General topics
      Flow control
      Conditional execution statements
      Iteration statements (loops)
      Jump statements
      Functions
      Function declaration
      Lambda function expression
      inline specifier
      Dynamic exception specifications(until C++17*)
      noexcept specifier(C++11)
      Exceptions
      Namespaces
      Types
      Specifiers
      constexpr(C++11)
      consteval(C++20)
      constinit(C++20)
      Storage duration specifiers
      Initialization
      Expressions
      Alternative representations
      Literals
      Boolean -Integer -Floating-point
      Character -String -nullptr(C++11)
      User-defined(C++11)
      Utilities
      Attributes(C++11)
      Types
      typedef declaration
      Type alias declaration(C++11)
      Casts
      Memory allocation
      Classes
      Class-specific function properties
      Special member functions
      Templates
      Miscellaneous
       
      Declarations
       
      Attributes
      (C++23)
      (C++11)(until C++26)
      deprecated
      (C++14)
      (C++20)
      (C++17)
      (C++11)
      (C++20)
       

      Indicates that the name or entity declared with this attribute isdeprecated, that is, the use is allowed, but discouraged for some reason.

      Contents

      [edit]Syntax

      [[deprecated]] (1)
      [[deprecated(string-literal)]] (2)
      string-literal - anunevaluated string literal that could be used to explain the rationale for deprecation and/or to suggest a replacing entity

      [edit]Explanation

      Indicates that the use of the name or entity declared with this attribute is allowed, but discouraged for some reason. Compilers typically issue warnings on such uses. Thestring-literal, if specified, is usually included in the warnings.

      This attribute is allowed in declarations of the following names or entities:

      • [[deprecated]]typedef S* PS;,
      • using PS[[deprecated]]= S*;,
      • enumerator, e.g.,enum{ A[[deprecated]], B[[deprecated]]=42};,
      (since C++17)

      A name declared non-deprecated may be redeclared deprecated. A name declared deprecated cannot be un-deprecated by redeclaring it without this attribute.

      [edit]Example

      Run this code
      #include <iostream> [[deprecated]]void TriassicPeriod(){std::clog<<"Triassic Period: [251.9 - 208.5] million years ago.\n";} [[deprecated("Use NeogenePeriod() instead.")]]void JurassicPeriod(){std::clog<<"Jurassic Period: [201.3 - 152.1] million years ago.\n";} [[deprecated("Use calcSomethingDifferently(int).")]]int calcSomething(int x){return x*2;} int main(){    TriassicPeriod();    JurassicPeriod();}

      Possible output:

      Triassic Period: [251.9 - 208.5] million years ago.Jurassic Period: [201.3 - 152.1] million years ago. main.cpp:20:5: warning: 'TriassicPeriod' is deprecated [-Wdeprecated-declarations]    TriassicPeriod();    ^main.cpp:3:3: note: 'TriassicPeriod' has been explicitly marked deprecated here[[deprecated]]  ^main.cpp:21:5: warning: 'JurassicPeriod' is deprecated: Use NeogenePeriod() instead ⮠ [-Wdeprecated-declarations]    JurassicPeriod();    ^main.cpp:8:3: note: 'JurassicPeriod' has been explicitly marked deprecated here[[deprecated("Use NeogenePeriod() instead")]]  ^2 warnings generated.

      [edit]References

      • C++23 standard (ISO/IEC 14882:2024):
      • 9.12.5 Deprecated attribute [dcl.attr.deprecated]
      • C++20 standard (ISO/IEC 14882:2020):
      • 9.12.4 Deprecated attribute [dcl.attr.deprecated]
      • C++17 standard (ISO/IEC 14882:2017):
      • 10.6.4 Deprecated attribute [dcl.attr.deprecated]
      • C++14 standard (ISO/IEC 14882:2014):
      • 7.6.5 Deprecated attribute [dcl.attr.deprecated]

      [edit]See also

      C documentation fordeprecated
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/attributes/deprecated&oldid=181333"

      [8]ページ先頭

      ©2009-2025 Movatter.jp