
Modern C++ Programming Cookbook
By :

C++ has been very deficient when it comes to features that enable reflection or introspection on types or data or standard mechanisms to define language extensions. Because of that, compilers have defined their own specific extensions for this purpose. Examples include the VC++ __declspec()
specifier or the GCC __attribute__((...))
. C++11, however, introduces the concept of attributes that enable compilers to implement extensions in a standard way or even embedded domain-specific languages. The new C++ standards define several attributes all compilers should implement, and that will be the topic of this recipe.
Use standard attributes to provide hints for the compiler about various design goals:
[[nodiscard]]
attribute:[[nodiscard]] int get_value1() { return 42; } get_value1(); ...