Until C++20, we have two diametral ways to think about functions or user-defined types (classes). Functions or classes can be defined on specific types or on generic types. In the second case, we call them to function or class templates.
There exist two extremes while talking about functions in C++. Let’s take a closer look at two function implementations: