c++11 函数模板的默认模板参数
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <map>
// C++11之前,类模板是支持默认的模板参数,却不支持函数模板的默认模板参数
//1、普通函数带默认参数,c++98 编译通过,c++11 编译通过
void DefParm(int m = 3) {}
//2、类模板是支持默认的模板参数,c++98 编译通过,c++11 编译通过
template <typename T = int>
class DefClass {};
//3、函数模板的默认模板参数, c++98 - 编译失败,c++11 - 编译通过
template <typename T = int>
void DefTempParm() {}
// 类模板的默认模板参数必须从右往左定义,函数模板的默认模板参数则没这个限定
template<class T1, class T2 = int> class DefClass1;
template<class T1 = int, class T2> class DefClass2; // 无法通过编译
template<class T, int i = 0> class DefClass3;
template<int i = 0, class T> class DefClass4; // 无法通过编译
template<class T1 = int, class T2> void DefFunc1(T1 a, T2 b);
template<int i = 0, class T> void DefFunc2(T a);
void mytest()
{
return;
}
int main()
{
mytest();
system("pause");
return 0;
}