c++ - C++ 中的嵌套模板

标签 c++ visual-studio-2010 templates

我想模板化一个函数以实现代码重用和特化。

函数签名类似于 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/

相关文章:

c++ - 当表示为对象的一维 vector 时有效地旋转 NxM 矩阵 (C++)

c++ - 初始化列表的好处

c# - 为什么过时会导致错误?

c++ - 模板函数作为模板参数

c++ - 使用通配符 C++ 从当前目录打开文件

c++ - 使用 Kadane 算法求模的最大子数组

javascript - 如何从 jquery 验证插件中删除默认错误消息

.net - 如何使用 Visual Studio 在项目中编译/链接 IL 代码

Java 表达式语言 : Interpolation?

json - Azure APIM-无法访问液体模板中的 json 正文值