В чем разница между явным и неявным созданием экземпляров шаблона функции?

Допустим есть шаблон функции:

template <class T>
void func(T x, T y);

При вызове в коде этой функции, например, с параметрами int, произойдет неявное создание экземпляра шаблона.

Но можно явно создать экземпляр:

template void func<float>(float x, float y);

В чем разница между явным и неявным созданием экземпляра шаблона функции? Для чего вообще было введено явное создание экземпляра шаблона функции?


Ответы (1 шт):

Автор решения: user7860670

Это может быть нужно, когда шаблон определяется только для нескольких вариантов в определенной единице трансляции. Обычно так делают чтобы экспортировать эти варианты из dll

→ Ссылка