C ++ gcc函数模板重载编译问题

时间:2015-05-01 20:21:26

标签: c++ templates gcc

我有一个类,其中有几个成员函数定义如下:

template <class T> void query(std::vector<T>& retVec, ... rest of params)
{
  // get raw results
  DBCursor results = ...;

  // convert results
  this->fillVector(retVec, results);
}

其中fillVector()具有非模板化版本和模板化过载:

void fillVector(std::vector<RawQueryType>& retVec, const DBCursor& results);

template <class T>
void fillVector(std::vector<T>& retVec, const DBCursor& results);

我在非模板化的 fillVector实现中有一个错误,但很多代码使用模板化重载。我的想法是,虽然对非模板fillVector的修复需要大量重新编译,但生成的.so共享库文件对于使用模板化版本的所有内容仍然是相同的。重新编译之后,我观察的是库文件实际上是不同的。

所以我的问题是,这是正确的假设吗?如果没有,那么为什么不呢? 如果是,那么这意味着我可能会在某个地方调用非模板化的版本,我认为我不是吗?

编译器是g ++ 4.8.1

0 个答案:

没有答案