如何链接模板化类/函数的选定实例?

时间:2018-03-20 12:52:18

标签: c++ templates linkage

让我们说,我有3个类,提供相同的功能。它们在类层次结构中是不相关的,但它们的实现方式与彼此类似。

  • A类
  • B级
  • C类

出于示例目的,我们假设A,B和C是包含一些整数的数组,但是每个类都以不同的方式保存它。每个类都提供其迭代器类class_name::begin()class_name::end()。现在我有一些函数模板foo,它增加了数组的每个元素。

template <typename T>
void foo(T & a)
{
    for(auto & element : a)
        element++;
}

但是,我们可以说foo具有非常大的身体,适用于TAB等每种类型C。我怎么告诉编译器:

  

我只会使用foo<A>foo<B>foo<C>。让我将我的函数移动到.cpp文件并链接它。

我问这个的原因是因为模板用于缩短代码,这适用于多个编译时可解析的上下文。我不想在.cpp文件中写3次相同的函数。

0 个答案:

没有答案