Есть шаблонизированный класс A, и есть класс B, у которого шаблонизирована функция f, и эта функция использует объект класса A<T>, если вызвано ее инстанцирование для класса T.
Все это определено в файлах A.h B.h, а в A.cpp и B.cpp тестовые функции. В A.cpp создаются экземпляры A<int>. Так вот, если B.cpp вызывается что-то вроде B::f<int>() -- все ОК, но если в B::f<char>() -- получаю ошибку линковки
g++ -o miptcc ir/bblock.o ir/cfedge.o ir/cfg.o ir/dl_list.o ir/edge.o ir/expr.o ir/gnode.o ir/graph.o ir/ir.o ir/l_list.o ir/pool.o ir/slab_allocator.o ir/stmt.o main.o ir/pool.o(.gnu.linkonce.t._ZN4pool14init_allocatorIcEEvj+0x35): In function `void pool::init_allocator<char>(unsigned)':
/home/tiger/pr/miptcc/ir/pool.cpp:37: undefined reference to `slab_allocator<char>::slab_allocator[in-charge](unsigned)' collect2: ld returned 1 exit status
(slab_allocator = A, pool = B).
Я пытался создать более простой пример данной ситуации, чем проект, однако ничего не вышло: там все линкуется. Может кто сталкивался с подобной ситуацией?