Я только начал изучать шаблоны. Как компилятор узнает, какие типы данных требуются? Может кто-нибудь объяснить, как компиляторы обрабатывают шаблоны и работают с ними?
Это основано на фактической реализации. Если вы фактически объявляете объект, используя один из ваших шаблонов (и любой заданный набор параметров для него), то будет сгенерирован код. Приличный компилятор будет генерировать код именно для тех конфигураций, которые вы используете, и ни для тех, которые вы не используете. Я надеюсь, что это объясняет это адекватно.