Справочник по Ada 2005
Раздел 12: Обобщённые единицы
Обобщённая единица — это программная единица, являющаяся либо обобщённой подпрограммой, либо обобщённым пакетом. Обобщённая единица — это шаблон, который может быть параметризован, и из которого можно получить соответствующие (необобщённые) подпрограммы или пакеты. Полученные программные единицы называются экземплярами исходной обобщённой единицы.
Обобщённая единица объявляется с помощью объявления_обобщенной_единицы. Эта форма объявления содержит формальную_часть_обобщения, которая объявляет любые формальные параметры обобщения. Экземпляр обобщённой единицы получается в результате инстанциации_обобщения с соответствующими фактическими параметрами для формальных параметров обобщения. Экземпляр обобщённой подпрограммы — это подпрограмма. Экземпляр обобщённого пакета — это пакет.
Обобщённые единицы являются шаблонами. Как шаблоны, они не обладают свойствами, специфичными для их необобщённых аналогов. Например, обобщённую подпрограмму можно инстанцировать, но нельзя вызвать. В отличие от этого, экземпляр обобщённой подпрограммы — это (необобщённая) подпрограмма; следовательно, этот экземпляр можно вызвать, но нельзя использовать для создания других экземпляров.