значение & lt; & gt; после расширения класса в дротике [дубликат]

При компиляции шаблоны должны быть созданы экземплярами , прежде чем их компилировать в объектный код. Это создание может быть достигнуто только в том случае, если известны аргументы шаблона. Теперь представьте сценарий, в котором функция шаблона объявлена ​​в a.h, определенная в a.cpp и используемая в b.cpp. Когда компилируется a.cpp, не обязательно известно, что для предстоящей компиляции b.cpp потребуется экземпляр шаблона, не говоря уже о том, какой конкретный экземпляр это будет.

Можно утверждать, что компиляторы можно сделать умнее, чтобы «смотреть вперед» для всех применений шаблона, но я уверен, что это было бы нелегко создавать рекурсивные или другие сложные сценарии. AFAIK, компиляторы этого не делают. Как заметил Антон, некоторые компиляторы поддерживают явные декларации экспорта экземпляров шаблонов, но не все компиляторы поддерживают его (пока?).

0
задан iLevi 13 July 2018 в 17:45
поделиться

1 ответ

Я считаю, что State & lt;> - общий класс, а Random words - общий аргумент для этого класса. Это в основном означает, что вы адаптируете унаследованный класс RandomWordsState, чтобы он специализировался для работы с RandomWords.

Дальнейшее чтение ... https://en.m.wikipedia.org/wiki/Generic_programming

0
ответ дан 3-14159265358979323846264 17 August 2018 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: