constexpr
In this lesson, we'll study constexpr.
Constant Expressions
You can define, with the keyword constexpr, an expression that can be evaluated at compile-time. constexpr can be used for variables, functions, and user-defined types. An expression that is evaluated at compile-time has a lot of advantages.
A constant expression
- can be evaluated at compile-time.
- gives the compiler deep insight into the code.
- is implicitly thread-safe.
constexpr - Variables and Objects
If you declare a variable as constexpr, the compiler will evaluate them at compile-time. This holds not only true for built-in types but also for instantiations of user-defined types. There are a few serious restrictions for objects in order to evaluate them at compile-time.
To make life easier for us, we will call the C types like bool, char, int, and double primitive data types. We will call the remaining data types as user-defined data types. These are for example, std::string, types from the C++ library and non-primitive data types. Non-primitive data types typically hold primitive data types.
Variables
By using the keyword constexpr, the variable becomes a constant expression.
constexpr double pi= 3.14;
Therefore, we can use the variable in contexts that require a constant ...