Used Features of Modern C++¶
Used Feature |
Required C++ Standard |
Description |
|---|---|---|
|
||
|
||
Lambdas are a great feature that allow you to define small, inline functions anywhere in your code. |
||
Constant expressions are powerful for a variety of reasons. Most importantly, anything declared as |
||
The |
||
Move semantics are an important feature that allow the programmer to optimize performance by transferring resources instead of copying them unnecessarily. |
||
A simple and convenient way of initializing member variables directly in their declaration, without needing a constructor initializer list. |
||
Declaring a function as deleted explicitly prevents it from being used. |
||
A non-owning view into a string. |
||
Provides access to thread-related functionality. |
||
The |
||
Provides access to information about the source code location (e.g., file name, line number, function name). |
||
Simplifies initializing structs, especially useful for Vulkan structs. |
||
Allows explicit member initialization using names, making struct initialization clearer and less error-prone. |
||
Standard library facilities for generating pseudo-random numbers. |
||
Specifies that the return value of a function should not be ignored. |
||
Useful for defining and initializing a variable that is only used within the scope of an |
||
Provides facilities for interacting with the file system. |
||
Defines scoped enumerations, avoiding name clashes and improving type safety. |
||
Used for automatic memory management and avoiding manual |
||
Safely creates and returns a |
||
Safely creates and returns a |
||
A type-safe replacement for |
||
Simplifies iteration over containers. |
||
Used in template programming for perfect forwarding of arguments. |
||
A general-purpose wrapper for callable objects (functions, lambdas, functors, etc.). |
||
Used for shared (read) access in synchronization primitives like |
||
Provides type-safe, modern string formatting functionality (similar to Python’s |
||
Allows compile-time conditional branching, enabling cleaner and more efficient template code. |
||
Declare multiple variables at once by decomposing a returned object, such as an array, tuple, pair, or struct. |
||
Allows template parameters to be constrained with compile-time requirements, making templates safer and easier to read and use. |
||
Generalization of the algorithms and iterator libraries that makes them more powerful by making them composable and less error-prone. |