Глава 19. Классы-шаблоны_________________________________517

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

Создание синонимов

Иногда отдельно взятый шаблон класса или функции может показаться чересчур усложненным или невыразительным (например, некоторые ваши соратники по проекту могут недостаточно хорошо разбираться в сложных синтаксических построениях). Упростить синтаксис функций-шаблонов можно с помощью синонимов (synonyms) или, как их еще называют, псевдонимов (alias). •

Используем снова как пример нашу функцию swap: создадим псевдоним для вещественной (float) версии этой функции

typedef Swap<float> FSwap;

После этого вместо

float w = 1.0, х = 3.45;

Sap<float> (w, х) ;

можно написать

FSwap ( w, х) ;

Объявления псевдонимов располагаются в заголовочном файле или в любом месте среди других объявлений. Иногда такой прием может улучшить читабельность программы.

Другой причиной для создания синонимов может стать стремление скрыть от пользователя некоторые детали реализации. Например, при настройке шаблонов на конкретное аппаратное обеспечение совершенно незачем сообщать другим программистам — пользователям вашего класса — конкретный адрес или порт используемого ресурса.

Дополнительные аспекты

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