| 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 | ||||||||||||||||
| ||||||||||||||||
| 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 | ||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++23) | ||||
(C++11)(until C++26) | ||||
deprecated (C++14) | ||||
(C++17) | ||||
(C++26) | ||||
(C++20) | ||||
(C++17) | ||||
(C++17) | ||||
(C++11) | ||||
(C++20) | ||||
(TM TS) | ||||
(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 |
[[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 |
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:
| (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.
#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.C documentation fordeprecated |