Typename Parameter as a Return Type
Templates are not just for defining the types of parameters. A powerful feature of templates is that the return type of a function can also depend on the template parameter. This gives you the flexibility to create generic functions with return types that adjust based on the template type provided.
main
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
template<typename T>
T MyFirstTemplateReturn()
{
// Returning a default-initialized value of type T
return T{};
}
int main()
{
// Call the template with the void type
std::cout << typeid(MyFirstTemplateReturn<void>()).name() << std::endl;
}
1234567891011121314#include <iostream> template<typename T> T MyFirstTemplateReturn() { // Returning a default-initialized value of type T return T{}; } int main() { // Call the template with the void type std::cout << typeid(MyFirstTemplateReturn<void>()).name() << std::endl; }
In the example above, the function's return type is defined by the template parameter T
. When we specify void as the type, the compiler interprets it accordingly.
Завдання
Swipe to start coding
Create a simple template that returns the passed value
- Write a simple template function called
GetValue
. - Use the template's typename parameter as the return type.
- Add a parameter to the template function with the same type as the return type.
- Return the function's parameter.
Рішення
solution
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
template<typename T>
T GetValue(T value)
{
return value;
}
int main()
{
std::cout << GetValue<int>(42) << std::endl;
std::cout << GetValue<std::string>("c<>definity") << std::endl;
std::cout << GetValue<float>(21.55) << std::endl;
std::cout << GetValue<bool>(false) << std::endl;
}
Все було зрозуміло?
Дякуємо за ваш відгук!
Секція 2. Розділ 1
99
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
// Implement template function here
int main()
{
std::cout << GetValue<int>(42) << std::endl;
std::cout << GetValue<std::string>("c<>definity") << std::endl;
std::cout << GetValue<float>(21.55) << std::endl;
std::cout << GetValue<bool>(false) << std::endl;
}
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат