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