Summary
In this chapter, we implemented a data and method hiding design approach, PIMPL, that has the added benefit of reducing dependencies and reducing build times. We then implemented function objects directly as custom classes and then as lambda functions. We then expanded our template programming skills by diving into variadic templates culminating in a template which can be used for event callback processing. In the next chapter, we will learn how to use the features of C++ to develop programs with multiple thread and manage their co-operation through concurrency constructs.