Шаблоны

В современных языках программирования существует множество встроенных средств, позволяющих избегать дублирования кода и, тем самым, минимизировать количество ошибок и повышать производительность программиста. В MQL5 к числу таких средств можно отнести уже известные нам функции, объектные типы с поддержкой наследования (классы и структуры), макроопределения препроцессора и возможность включения файлов. Но этот список был бы неполным без шаблонов.

Шаблон — это специальным образом составленное обобщенное определение функции или объектного типа, на базе которого компилятор способен автоматически генерировать рабочие экземпляры этой функций или объектного типа. Полученные экземпляры содержат один и тот же алгоритм, но оперируют переменными различных типов, соответствующих конкретным условиям использования шаблона в исходном коде.

Для знатоков C++ отметим, что шаблоны MQL5 не поддерживают многие возможности шаблонов C++, в частности:

  • параметры, не являющиеся типами;
  • параметры со значениями по умолчанию;
  • переменное количество параметров;
  • специализация классов, структур и объединений (полная и частичная);
  • шаблоны шаблонов.

С одной стороны, это снижает потенциал шаблонов в MQL5, но, с другой стороны, упрощает освоение материала тем, кто незнаком с этими технологиями.