我想模板化一个函数以实现代码重用和特化。
函数签名类似于 int DoStuff(FooBar &a);
其中 FooBar 是 Foo<BarX>
,即我无法事先输入的模板实例。
我尝试做template <class T> int DoStuff(Foo<T> &a);
和template <class T> int DoStuff(T &a);
,但我收到了常规的神秘链接器错误,这甚至没有一点帮助。
也找不到有关此类主题的教程,仅找到简化模板使用的教程。
代码的调用方式如下:
Foo<Bar1> var1;
int res1 = DoStuff(var1);
Foo<Bar2> var2;
int res2 = DoStuff(var2);
etc.
我是在尝试做一些不可能的事情吗?
最佳答案
您建议的代码:template <class T> int DoStuff(Foo<T> &a);
应该管用。
请注意,与模板化结构/类一样,函数的代码必须在使用函数的地方可见(即函数的代码通常必须位于 header 中)。
关于c++ - C++ 中的嵌套模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561286/