A function template defines a family of functions.| en.cppreference.com
Class templates, function templates (including generic lambdas), and other templated functions (typically members of class templates) might be associated with a constraint , which specifies the requirements on template arguments, which can be used to select the most appropriate function overloads and template specializations.| en.cppreference.com
C++| en.cppreference.com
Each C++ expression (an operator with its operands, a literal, a variable name, etc.) is characterized by two independent properties: a type and a value category. Each expression has some non-reference type, and each expression belongs to exactly one of the three primary value categories: prvalue, xvalue, and lvalue.| en.cppreference.com
Declares a named variable as a reference, that is, an alias to an already-existing object or function.| en.cppreference.com
An enumeration is a distinct type whose value is restricted to a range of values (see below for details), which may include several explicitly named constants ("enumerators").| en.cppreference.com
Constructs a closure (an unnamed function object capable of capturing variables in scope).| en.cppreference.com
In order to instantiate a class template, every template argument must be known, but not every template argument has to be specified. In the following contexts the compiler will deduce the template arguments from the type of the initializer:| en.cppreference.com