Шаблон дублирования объектного кода
Первое: нет, я не спрашиваю о специализациях шаблонов.
Предположим следующий пример: у меня есть файл заголовка с универсальным методом:
template <typename T>
T foo(T bar) {
return bar;
}
Во втором файле под названием file1.cpp
Я использую этот метод как foo<int>(42);
, Теперь, насколько я понимаю, компилятор будет генерировать объектный код для метода шаблона в сгенерированном file1.o
объектный файл.
Теперь, если у меня есть 10000 файлов, которые все используют этот метод с параметром шаблона int, компилятор сгенерирует тот же самый код 10000 раз, поскольку генерация объектного кода не зависит от всех других объектов (по крайней мере, я так думаю).
У меня такой вопрос: когда компоновщик объединяет все 10000 объектных файлов в мой двоичный файл, он 10000 раз копирует один и тот же код или он может обнаружить это и включить метод только один раз (для каждого типа шаблона)?