Предположим, что у меня есть fileA.h
, который объявляет класс classA
с помощью функции шаблона SomeFunc<T>()
. Эта функция реализуется непосредственно в файле заголовка (как обычно для функций шаблона). Теперь я добавляю специализированную реализацию SomeFunc()
(например, для SomeFunc<int>()
) в fileA.C
(т.е. Не в файл заголовка).
Если я теперь звоню SomeFunc<int>()
из какого-то другого кода (возможно, из другой библиотеки), вызовет ли он общую версию или специализацию?
У меня есть эта проблема прямо сейчас, когда класс и функция живут в библиотеке, которая используется двумя приложениями. И одно приложение правильно использует специализацию, в то время как другое приложение использует общую форму (что впоследствии приводит к проблемам с выполнением). Почему разница? Может ли это быть связано с параметрами компоновщика и т.д.? Это на Linux, с g++ 4.1.2.