首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板特化的有关问题,应该简单,请高手指教,为啥编译不通过啊

2012-02-07 
模板特化的问题,应该简单,请高手指教,为啥编译不通过啊?#include iostreamusingnamespacestdclassAlloc

模板特化的问题,应该简单,请高手指教,为啥编译不通过啊?
#include <iostream>
using   namespace   std;
class   Alloc{};
template   <typename   T1,typename   T2   =Alloc>
class   Info
{
T1   t1;
T2   t2;
public:
template <typename   T3>
static   void   Fun();
};
template   <typename   T1,typename   T2   =Alloc>
template   <>
void   Info <T1,T2> ::Fun <int> ()
{
cout < < "tempalte   function   runned " < <endl;
}
int   main()
{
Info <int> ::Fun <int> ();
system( "pause ");
return   0;
}

[解决办法]
你也太考验编译器了。貌似模板成员函数无法特化,用重载代替
[解决办法]
不可以吧
C++ template 199页说明template <> 不能跟在一个template parameter list之后

g++这样报错
template-id `Fun <int> ' for `void Info <T1, T2> ::Fun() ' does not match any template declaration
[解决办法]
template <class T1>
class A
{
public:
template <class T2>
static void fun();
template <>
static void fun <int> ();

template <>
static void fun <int> (){cout < < "int_okokok " < < endl;}
};

template <class T1> template <class T2>
void A <T1> ::fun(){cout < < "okokok " < < endl;}

int main()
{
A <int> ::fun <int> ();
A <int> ::fun <bool> ();
return 0;
}
[解决办法]
你可将特化版本写在类内
而且需在通用版本之后,这样可以
[解决办法]
C++ template 199页说明template <> 不能跟在一个template parameter list之后
====================================
写在类内这样避免

热点排行