Supongamos que tengo fileA.h
que declara una clase classA
con función de plantilla SomeFunc<T>()
. Esta función se implementa directamente en el archivo de encabezado (como es habitual para las funciones de plantilla). Ahora agrego una implementación especializada de SomeFunc()
(como para SomeFunc<int>()
) en fileA.C
(es decir, no en el archivo de encabezado).Visibilidad de la plantilla de especialización de la función C++
Si ahora llamo al SomeFunc<int>()
desde algún otro código (tal vez también desde otra biblioteca), ¿llamaría a la versión genérica o la especialización?
Tengo este problema en este momento, donde la clase y la función viven en una biblioteca que es utilizada por dos aplicaciones. Y una aplicación utiliza correctamente la especialización, mientras que otra usa la forma genérica (lo que causa problemas de tiempo de ejecución más adelante). ¿Por qué la diferencia? ¿Podría esto estar relacionado con las opciones del vinculador, etc.? Esto está en Linux, con g ++ 4.1.2.
Damnit, la vinculación automática del nombre de usuario no funciona. –