Шаблон псевдонима
Шаблон псевдонима alias template вводит новое имя для
семейства типов, зависящих от параметров шаблона. В отличие
от typedef, шаблон псевдонима может принимать
собственные параметры шаблона и подставлять их в уже
существующий шаблон. В первом параметре объявления мы
указываем имя нового псевдонима, далее в угловых скобках
перечисляем параметры шаблона, а после знака '='
записываем тип, для которого вводится сокращение.
Синтаксис
template <typename T>
using Alias = ExistingTemplate<T>;
Пример
Давайте введём псевдоним Vec для шаблона
std::vector с произвольным типом элементов:
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
using Vec = vector<T>;
int main()
{
Vec<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
cout << x << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте введём псевдоним StrMap для словаря,
где ключ - строка, а значение - произвольный тип:
#include <iostream>
#include <map>
#include <string>
using namespace std;
template <typename V>
using StrMap = map<string, V>;
int main()
{
StrMap<int> m;
m["a"] = 1;
m["b"] = 2;
m["c"] = 3;
cout << m["a"] << " " << m["b"] << " " << m["c"] << endl;
return 0;
}
Результат выполнения кода:
1 2 3
Пример
Давайте введём псевдоним Func для указателя
на функцию, принимающую два аргумента типа T
и возвращающую T:
#include <iostream>
using namespace std;
template <typename T>
using Func = T(*)(T, T);
int add(int a, int b)
{
return a + b;
}
int main()
{
Func<int> f = add;
cout << f(2, 3) << endl;
return 0;
}
Результат выполнения кода:
5
Смотрите также
-
ключевое слово
template,
которое объявляет шаблон -
ключевое слово
typename,
которое задаёт параметр-тип шаблона -
шаблон класса,
который описывает семейство классов -
шаблон переменной,
который описывает семейство переменных