-
Book Overview & Buying
-
Table Of Contents
Hands-On Design Patterns with C++ - Second Edition
By :
In this section, we will analyze the possibility of using the Visitor pattern at compile time, in a similar fashion to, say, the application of the Strategy pattern that leads to policy-based design.
First of all, the multiple dispatch aspect of the Visitor pattern becomes trivial when used in the template context:
template <typename T1, typename T2> auto f(T1 t1, T2 t2);
A template function can easily run a different algorithm for any combination of the T1 and T2 types. Unlike the run-time polymorphism implemented with virtual functions, dispatching the call differently based on two or more types comes at no extra cost (other than writing code for all the combinations we need to handle, of course). Based on this observation, we can easily mimic the classic Visitor pattern at compile time:
// Example 18
class Pet {
std::string color_;
public:
Pet(std::string_view color) : color_(color) {}
const std...