Generic Programming is a programming language paradigm where algorithms are written in terms of types to be specified later and then instantiated when needed for specific types of the parameters
template
keywordtypename
keyword used to declare the template parameterT
from the types of parameters in the callstd::sort()
worksstd::function