`typename` — C++ Keyword
`typename` — C++ Keyword
The typename keyword in C++: introduces type template parameters and disambiguates dependent type names.
`typename` — C++ Keyword
The typename keyword in C++: introduces type template parameters and disambiguates dependent type names.
Use reference pages to confirm names, categories, nearby facilities, and the constraints that matter before writing or reviewing code.
typenameHas two uses: (1) introduces a type template parameter (equivalent to class in that context), and (2) disambiguates a dependent name that refers to a type inside a template.
template <typename T> ... // type parameter
template <typename T, typename U> ...
// Disambiguate dependent type inside a template body
typename T::value_type x;
#include <print>
#include <vector>
// (1) Type parameter
template <typename T>
T square(T x) { return x * x; }
// (2) Dependent type disambiguation
template <typename Container>
void print_first(const Container& c) {
typename Container::value_type first = c.front();
std::println("{}", first);
}
int main() {
std::println("{}", square(5)); // 25
std::println("{:.1f}", square(2.5)); // 6.2
std::vector<int> v = {10, 20, 30};
print_first(v); // 10
}
typename and class are interchangeable as template parameter keywords; typename is more expressive since the parameter doesn't have to be a class.typename, the compiler treats T::name as a non-type by default.typename in some dependent-name contexts.int main() {
// Pick one facility from this reference page.
// Write the smallest program that exercises its main precondition,
// complexity rule, or lifetime constraint before scaling up.
return 0;
}