Using virtual function calls in constant expressions
As a multi-paradigm programming language, C++ includes support for object-oriented programming. Polymorphism, one of the core principles of object-oriented programming, has two forms in C++: compile-time polymorphism, with function and operator overloading, and runtime-polymorphism, with virtual functions. Virtual functions allow a derived class to override the implementation (of a function) in the base class. In C++20, however, virtual functions are allowed in constant expressions, meaning they can be invoked at compile time. In this recipe, you will learn how that works.
Getting ready
In this recipe, we will use the following structure to represent the dimension of a document and, respectively, an envelope, in the ensuing examples:
struct dimension
{
double width;
double height;
};
How to do it…
You can move runtime polymorphism to the compile time by doing the following:
- Declare the...