Template specialization — provide a different implementation for a specific type.
1// Primary template2template<typename T>3void print(T value) {4 std::cout << value << "\n";5}67// Full specialization for bool8template<>9void print<bool>(bool value) {10 std::cout << (value ? "true" : "false") << "\n";11}1213print(42); // Uses primary template14print(true); // Uses specialization1516// Partial specialization for pointers17template<typename T>18void print(T* ptr) {19 std::cout << "Pointer to: " << *ptr << "\n";20}2122int x = 10;23print(&x); // Uses partial specialization
Types: