C++. Шаблоны. Параметры шаблонов как значения

Тема параметров шаблонов как значений относительно простая и очень короткая, но для лучшего понимания рекомендуется знать:

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


Вот более полный класс:

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


Шаблонным функциям также дозволено иметь шаблонные параметры не представляющие собой типы, а представляющие значения:


Эти параметры также могут иметь значение по умолчанию:
К сожалению, иногда задействовать параметр-значение {шаблона по умолчанию} невозможно. Туда можно подсовывать только значения, известные на момент компиляции, но не вычисляемые значения, получаемые во время работы программы. Например, ниженаписанный код не может быть скомпилирован из-за того, что переменная i вычисляется уже после запуска программы:


В листинге #4 синтаксически всё выглядит как будто бы правильно, но мы подсовываем в угловые скобки, т. е. в шаблон, значение, вычисляемое программоё во время выполнения, а шаблоны с такими работать не могут: им нужны только значения времени компиляции.
Ниже один из наиболее простых примеров, демонстрирующий работу с {параметром шаблона по умолчанию} и с {обычным параметром шаблона}. При первом заполнении мы шаблону не подаём 3-й аргумент, и параметр устанавливается в значение по умолчанию, а во втором подаём — и параметр устанавливается в значение аргумента. В результате первый массив увеличивает свои значения на 200 (как указано в параметре шаблона по умолчанию), а второй увеличивает свои на 77 (как мы и просили при установке значения в угловые скобки в месте вызова шаблонной функции).

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

Добавить комментарий

Ваш e-mail не будет опубликован.

99 − = 94

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/dzhon-vlissides/priemy-obektno-orientirovannogo-proektirovaniya-patterny-proektirovaniya-16419747/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

В чем заключается многозадачность Windows? Она глючит и pаботает одновpеменно.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок