模板参数推导

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

看下面一段代码:

template<typename ReturnValue_t>

struct FuncPtrTraits

{

typedef ReturnValue_t (*Type)(int,int);

};

template<typename ReturnValue_t>

void MakeFuncPtr(typename FuncPtrTraits<ReturnValue_t>::Type arg1)

{

//do something

};

int test(int x,int y)

{

return (x + y);

};

int main()

{

MakeFuncPtr(test);

return 0;

};

用VC.NET编译上面这段代码会出错:C2783,“declaration”: 未能推导出“identifier”的模板参数。

我想要让编译器能推导出函数模板的模板参数,必须在函数的参数类型声明中直接使用模板参数,我所谓的直接使用,是指用来推导模板参数的函数参数类型定义不应该再使用某个类模板中的嵌套类型定义。如果象以上那样间接的使用,不够聪明的编译器就无能为力了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有