C++11起函数模板支持偏特化的疑惑

很多地方说“函数模板不能偏特化”,这个如果是按照03的标准来说,应该没有问题。(现在没有用之前的编译器测,如果这里有问题,请麻烦指正)。

于是抱着怀疑的态度,测试了一下,等着编译器报错:
template.h

#ifndef TEMPLATE_H
#define TEMPLATE_H

#include <iostream>
#include <map>

template <typename T, typename U>
void tfunc(T& a, U& b)
{
	std::cout << "1.tfunc 泛化版本函数" << std::endl;
}

template <>
void tfunc(int& a, int& b)
{
	std::cout << "2.tfunc 全特化版本函数" << std::endl;
}

template <typename T>
void tfunc(T& a, double& b)
{
	std::cout << "3.tfunc 偏特化版本函数" << std::endl;
}

#endif // TEMPLATE_H

main.cpp

#include "template.h"

int main()
{
	int a1 = 1;
	double b1 = 3.2;
	double b2 = 4.2;

	tfunc(a1, b1);
	tfunc(a1, a1);
	tfunc(b1, b2);

	getchar();
	return 0;
}

运行结果:
在这里插入图片描述
换了个编译器,用Qt中带的MingW7.5编译器运行了一下,一样的结果。
突然间就迷茫了,网上的那些说法难道都是人云亦云。

在C++ Templates第二版(英文版)中看到了证据:
在这里插入图片描述
在这里插入图片描述
以后对C++模板编程了解多一些,再来对本文章进行总结

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值