模板问题

i_noname 2007-05-08 03:51:41
在类foo中有模板函数bar
class foo
{
template <class T>
void bar(T &);
}

要用普通的类对bar进行特化,可以写成
class a { ... }
template <>
foo::bar<a>(a &) { ... }

问题:如何用模板类b将bar特化?
template <class T>
class b { ... }
???
foo::bar<???>(???) { ... }
...全文
294 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_noname 2007-05-08
  • 打赏
  • 举报
回复
用函数重载解决了
taodm 2007-05-08
  • 打赏
  • 举报
回复
不能,你这个<>里的还是不确定类型,那么就是偏特化。
如果<>里的是确定类型,那么就是全特化。
模板函数成员不可以偏特化。
i_noname 2007-05-08
  • 打赏
  • 举报
回复
谢谢 yutaooo,简单类型和非模板类可以按这样来写。
但我更关心模板类能否实现相似的功能,例如
//以下代码无法编译
template<class T>
template<>
void test::bar<vector<T> >(vector<T> &) {
...
}
yutaooo 2007-05-08
  • 打赏
  • 举报
回复
要么这样 ?

// test3.cpp
// xp + vc-8_0
// cl -EHsc test3.cpp
#include <iostream>

class test {
public:
template <class T>
void bar(T &);
};

template<>
void test::bar<int>(int &) {
std::cout << "void test::bar<int>(int)" << std::endl;
}

int main() {
test t;
int i = 1;
t.bar(i);
return 0;
}
i_noname 2007-05-08
  • 打赏
  • 举报
回复
将b<T>整体作为bar的特化对象可以吗?
i_noname 2007-05-08
  • 打赏
  • 举报
回复
如何全特化?
taodm 2007-05-08
  • 打赏
  • 举报
回复
模板函数成员不可以偏特化。
要么全特化,要么用重载。

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧