关于特化函数模板的问题

C++语言 码拜 5年前 (2016-06-09) 333次浏览
考虑如下特化:

template<> const char * maxn<const char*>(const char *strArr[], int length) {
	const char * maxLen = strArr[0];
	for (int i = 1; i < length; i++) {
		if (strlen(strArr[i]) > strlen(maxLen))
			maxLen = strArr[i];
	}
	return maxLen;
}

本人想知道<>到底是干什么用的,假如说是显式为函数参数提供类型那么为什么不可以是int.
而且假设在main函数中调用这个模板(抱歉,本人不知道有没有其他名称只能用调用)

	char * cmax = maxn(carr, 5);

在调用的时候不加<>可以编译成功,但是加上<const char *>就编译失败,感到很是不解,C++ PRIMER PLUS中没有对<>的解释,各位高手求指导
总结一下,本人的问题就是
1.在函数模板特化中<>是干什么的
2.在调用函数模板特化中<>是干什么的
3.“调用函数模板特化”有没有比较专业的名称,函数模板不是函数定义,所以本人感觉这样说有点唐突

解决方案

26

只要实例化的时候没错,给什么参数都行

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于特化函数模板的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)