挖井

类库大魔王的挖井日记

挖一口属于自己的井


让Borland编译器支持返回值为模板参数的自动推导

  昨天说到,用Borland最新的C++编译器在编译模板的时候,对于成员函数模板的情况,如果只是函数返回值是模板参数时,是不会自动选择对应的特化版本的,而一直使用泛化版本,而VC至少8.0版是能自动选择的,记得当时用7.1写TclSuck时也用到了这样的特性,所以应该也是直接支持的。
  不过,现在发现了让Borland编译器也能自动选择的作法,其实很简单,只要在成员模板声明和定义的地方加些东西就可以了,仔细看下面的代码,比较和昨天的代码的不同点,呵呵:

class kk
{
public:
template<typename T>
static T test()
{
T t;
cout << "general edition" <<endl;
}
template<>
static int test<int>()
{
int i;
cout << "int edition" <<endl;
}

template<typename T>
T test2()
{
T t;
cout << "2 general edition" <<endl;
}
template<>
int test2<int>()
{
int i;
cout << "2 int edition" <<endl;
}

template<typename T>
void test3(T t)
{
cout << "3 general edition" <<endl;
}
template<>
void test3(int t)
{
cout << "3 int edition" << endl;
}
};

  很简单吧,只是加了对尖括号和特化类型说明!这下可以继续了。
  顺便八卦一下,csdn真的不行了,连个blog也做不稳定就先不说了,昨天把这个问题挂上去,挂了一天一夜也没人问津,可见社区的整体技术水平,或者是技术氛围已经远远不如以前了。真要钻研技术的,去国外的技术社区比较有气氛。不过国外的用论坛的比较少,较多的是新闻组和邮件列表,有点不习惯。

本文地址:

https://minidump.info/blog/2007/03/e8-ae-a9borland-e7-bc-96-e8-af-91-e5-99-a8-e6-94-af-e6-8c-81-e8-bf-94-e5-9b-9e-e5-80-bc-e4-b8-ba-e6-a8-a1-e6-9d-bf-e5-8f-82-e6-95-b0-e7-9a-84-e8-87-aa-e5-8a-a8-e6-8e-a8-e5-af-bc/

上一篇

新问题

  现在的新问题是,编译器不能编译显式特化泛化类的成员函数模板!从BDS的联机帮助上看到,这是编译器显式禁止的。郁闷!也就是说,LuaTinker中的代码,是不能直接用上来的!唉,真想不用BDS了,用VC不就行了。可是用VC的话,我只会用SDK,画界面真的太费时间了!其实还有个办法,就是好好学...…

CPPOOPGPXP Shareware 全文阅读
下一篇

跟小妞狂吃了一顿

  找了个机会让小妞敲诈了一顿,呵呵,好久没和小妞一起吃饭了,下班后去F1大堂门口的她,然后两个人就说去吃火锅吧。走到肥牛府一看,没有好的位子了,于是走到隔壁的童子羊,点了9个菜,狂吃一顿,一直吃到快9点。撑啊,我们两个的战斗力还是不错的,呵呵。之后小妞说要我教她怎么刻录,于是去了她屋里,欣赏...…

mm 全文阅读