## Шаблони Функция/клас, която работи не с променливи от някакъв дефиниран тип, а с абстрактни променливи, се нарича шаблонна функция/клас ```c++ #include using namespace std; template T sum(T a, T b) { return a + b; } int main() { int a = 4; int b = 9; cout << sum(a, b) << endl; double c = 3.14; double d = 4.5; cout << sum(c,d) << endl; return 0; } ``` Компилаторът генерира т. нар. шаблонна функция, като замества параметрите на шаблона с типовете на съответните фактически параметри. **Задача 1:** Релизирайте структурата от данни опашка. Опашката трябва да работи с **произволни типове**. След като е добавен един елемент в края на опашката, той ще може да бъде извлечен (премахнат) единствено след като бъдат премахнати всички елементи преди него в реда, в който са добавени. **Пример**: ```c++ int main() { quene q; q.enqueue(3); q.enqueue(5); q.enqueue(10); cout << q.dequeue() << endl; //3 cout << q.dequeue() << endl; //5 cout << q.dequeue() << endl; //10 cout << q.isEmpty() << endl; //1 } ```