Re: Ключевое отличие шаблона от макроса
От: rg45 СССР  
Дата: 09.07.23 13:16
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Он должен быть целиком и полностью определен в заголовочном файле — нельзя разнести декларацию и дефиницию, как с обычной функцией или классом.


Вот это твое заблуждение, обусловленное недостатком знания языка. Определение шаблонов в заголовочных файлах необходимо только для неявного (implicit) инстанцирования. Но, помимо неявного, есть еще и явное инстанцирование (explicit instantiation). Шаблонные сущности (шаблоны функций и функции-члены шаблонных классов) можно не только определять в глубине единиц трансляции, но также и экспортировать из DLL.

Суть явного инстанцирования шаблонов можно объяснить на интуитивном уровне. Вот эти строки в твоем примере, это аналог явного инстанцирования:

DECLARE_CLASS1(int)
DECLARE_CLASS1(float)
--
Отредактировано 09.07.2023 13:57 rg45 . Предыдущая версия . Еще …
Отредактировано 09.07.2023 13:25 rg45 . Предыдущая версия .
Отредактировано 09.07.2023 13:24 rg45 . Предыдущая версия .
Отредактировано 09.07.2023 13:23 rg45 . Предыдущая версия .
Отредактировано 09.07.2023 13:21 rg45 . Предыдущая версия .
Отредактировано 09.07.2023 13:19 rg45 . Предыдущая версия .
Отредактировано 09.07.2023 13:17 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.