Шаблон дублирования объектного кода

Первое: нет, я не спрашиваю о специализациях шаблонов.

Предположим следующий пример: у меня есть файл заголовка с универсальным методом:

template <typename T>
T foo(T bar) {
    return bar;
}

Во втором файле под названием file1.cpp Я использую этот метод как foo<int>(42);, Теперь, насколько я понимаю, компилятор будет генерировать объектный код для метода шаблона в сгенерированном file1.o объектный файл.

Теперь, если у меня есть 10000 файлов, которые все используют этот метод с параметром шаблона int, компилятор сгенерирует тот же самый код 10000 раз, поскольку генерация объектного кода не зависит от всех других объектов (по крайней мере, я так думаю).

У меня такой вопрос: когда компоновщик объединяет все 10000 объектных файлов в мой двоичный файл, он 10000 раз копирует один и тот же код или он может обнаружить это и включить метод только один раз (для каждого типа шаблона)?

0 ответов

Другие вопросы по тегам