模板类中函数模板的特化问题

javin158 2008-11-25 11:30:51
template< typename ConstelType >
class ML
{
public:
ML(const std::vector< ConstelType >& constel):__constel(constel) { }
ML(const Comm::Modulation<ConstelType>& modulation):__constel(modulation.gen_constel()) { }
template< typename re_Type, typename ch_Type >
int ML_one_dim(const re_Type& re, const ch_Type& ch) const;
private:
const std::vector< ConstelType >& __constel;
template< typename re_Type >
double CaculDist(const re_Type& re, const re_Type& tr) const;
template <> //错误:显式特例化出现在非命名空间作用域 ‘class Comm::ML<ConstelType>’ 中
double CaculDist<const double&>(const double& re, const double& tr);
};

以上我的源程序,只是一个模板类的声明。错误如程序中所示,所用编译器是g++。
请问无法对类模板中的函数模板进行特化声明吗? C++标准是如此规定的吗? 谢谢!!!
...全文
235 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2008-11-25
  • 打赏
  • 举报
回复
用“重载”
yshuise 2008-11-25
  • 打赏
  • 举报
回复
// dd.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std ;
template < typename ConstelType >
class ML
{
public:

private:

template < typename re_Type >
double CaculDist( const re_Type& re, const re_Type& tr) const;

template <>
double CaculDist<double>(const double& re, const double& tr)const;
};
int _tmain(int argc, _TCHAR* argv[])
{

return 0;
}

在VC2003中从测试通过,在DEVCPP中报错。估计编译器还不支持。
javin158 2008-11-25
  • 打赏
  • 举报
回复
回ls:
因为CaculDist是一个模板函数,它与它所在的类使用不同的模板形参。所以我只是想特化这个模板函数里的模板形参,而不是类的模板形参

我在网上搜索后,发现csdn上以前有过类似的问题,参考http://topic.csdn.net/u/20081014/10/2ceed0f8-d906-40f9-a603-ecbb4f11584f.html
就呆在云上 2008-11-25
  • 打赏
  • 举报
回复
可以特化的
但是不是在类的定义里面
你的类是一个模板
但是特化了就不是模板了
你怎么还放在有模板限制的类里面呢?
就呆在云上 2008-11-25
  • 打赏
  • 举报
回复
template < typename ConstelType >
class ML
{
public:

private:

template < typename re_Type >
double CaculDist( const re_Type& re, const re_Type& tr) const;

template <>
double CaculDist<double>(const double& re, const double& tr)const;
};
int main(int argc,char* argv[])
{

return 0;
}


这样dev可能就不报错了

64,666

社区成员

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

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