Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Creating Your First Template in C++ | Creating First Template
C++ Templates

book
Creating Your First Template in C++

Let's see what is happening when we specify different types for the template. For this we will use typeid().name(), it simply shows the data type of the variable. Look at the example below:

cpp

main

copy
#include <iostream>

int main()
{
int x = 5;
std::cout << typeid(x).name();
}
1234567
#include <iostream> int main() { int x = 5; std::cout << typeid(x).name(); }

Note

The code snippet above will just display in console i, symbolizing that x is an int.

Let's create a template using <typename Type> and pass Type as a parameter to the function instead of specifying a specific variable.

cpp

main

copy
#include <iostream>

template<typename Type>
void check_type()
{
std::cout << typeid(Type).name() << std::endl;
}

int main()
{
// Try to change `int` to different type
check_type<int>();
}
12345678910111213
#include <iostream> template<typename Type> void check_type() { std::cout << typeid(Type).name() << std::endl; } int main() { // Try to change `int` to different type check_type<int>(); }

As you can see, when you call the template function and specify a type within the brackets, the typename parameter receives that type. The name of the template parameter essentially becomes an alias for that type.

Task

Swipe to start coding

  1. Turn the swap function into a template function:
    1. define template using the template keyword;
    2. add the list of template parameters;
    3. add one parameter for the template.
  2. Change all types (int) to the typename from the template parameter.
  3. Call the template function and pass char as the type, swapping two variables in the main function.

Solution

cpp

solution

#include <iostream>

template <typename Type>
void swap(Type &a, Type &b) {
Type temp = a; // Store a in temp
a = b; // Assign b to a
b = temp; // Assign temp (original a) to b
}

int main()
{
char digit = '3';
char letter = 'a';
swap<char>(digit, letter);
}
Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 1. Chapter 3
#include <iostream>

void swap(int &a, int &b) {
int temp = a; // Store a in temp
a = b; // Assign b to a
b = temp; // Assign temp (original a) to b
}

int main()
{
char digit = '3';
char letter = 'a';
swap<___>(digit, letter);
}
toggle bottom row
We use cookies to make your experience better!
some-alt