Может кому пригодится, вот пример простой шаблонной функции InDiapason(val, side1, side2), которая проверяет находится ли значение val между side1 и side2. Так выглядело без шаблона
| Код | bool InDiapason_double(double val, double side1, double side2) { double sideMin = min<double>(side1, side2); double sideMax = max<double>(side1, side2); return val >= sideMin && val <= sideMax; }
bool InDiapason_int(int val, int side1, int side2) { int sideMin = min<int>(side1, side2); int sideMax = max<int>(side1, side2); return val >= sideMin && val <= sideMax; }
|
Это не есть хорошо - плодить функции, делающие одно и тоже, но различающиеся типом данных на входе.
Поэтому пишем шаблон.
| Код | template<class T> bool InDiapason(T val, T side1, T side2) { T sideMin = min<T>(side1, side2); T sideMax = max<T>(side1, side2); return val >= sideMin && val <= sideMax; }
//а еще лучше, так: template<class T> bool InDiapason(T val, T side1, T side2) { return val >= min<T>(side1, side2) && val <= max<T>(side1, side2); }
|
Используем так:
| Код | int val = 1, side1 = 3, side2 = 5;
if (InDiapason(val, side1, side2)) { ShowMessage("В диапазоне"); } else { ShowMessage("Не в диапазоне"); }
|
|